VC菜鸟之路03_利用MFC绘制动态矩阵图
来源:互联网 发布:阿里云上海节点 编辑:程序博客网 时间:2024/06/06 01:31
接着要做一个动态矩阵图,要求图能检测鼠标的位置做出相应改变,并能相应功能键。具体效果如下:
好吧,我承认这图里的东西不是我做的,我的目标就是仿照这个做个新东西出来。当然也必须具备它的功能。
下面开始吧,首先创建FormView,接着为view田间OnDraw函数,然后在OnDraw函数中添加初始化程序:
void CMy123View::OnDraw(CDC* pDC)
{
CPen pen(PS_SOLID,2,RGB(0,0,0));
CPen* pOldPen=pDC->SelectObject(&pen);
pDC->MoveTo(300,20);
pDC->LineTo(900,20);
pDC->LineTo(900,620);
pDC->LineTo(300,620);
pDC->LineTo(300,20);
Draw(pDC);
}
上面我初始化了一个矩形边框,并且调用了初始化绘图程序Draw(),当然这个是我单独写的一个,代码如下:
void Draw(CDC* pDC)
{
Abscissa XLeft,XRight;
Ordinate YTop,YBotton;
XLeft=320,XRight=880;
YTop=40,YBotton=600;
int N_OutPut=8,N_InPut=8;
int N_Max=max(N_InPut,N_OutPut)+2;
for(int i=1;i<=N_OutPut;i++)
{
int Y_OutPut,X_OutPut;
X_OutPut=XRight-((XRight-XLeft)/N_Max);
Y_OutPut=YTop+((YBotton-YTop)/N_Max)*(i+1);
pDC->MoveTo(X_OutPut,Y_OutPut);
pDC->LineTo(XLeft+((XRight-XLeft)/N_Max),Y_OutPut);
pDC->MoveTo(X_OutPut,Y_OutPut);
pDC->LineTo(X_OutPut-(YBotton-YTop)/(N_Max*10),Y_OutPut+(YBotton-YTop)/(N_Max*10));
pDC->MoveTo(X_OutPut,Y_OutPut);
pDC->LineTo(X_OutPut-(YBotton-YTop)/(N_Max*10),Y_OutPut-(YBotton-YTop)/(N_Max*10));
/********************* 创建矩形区域并设置背景色 ***********/
CRect rc(XRight-(XRight-XLeft)/N_Max,
Y_OutPut-(YBotton-YTop)/(2*N_Max)+1,
XRight,
Y_OutPut+(YBotton-YTop)/(2*N_Max)-1);
CBrush brush(RGB(143,188,223));
pDC->FillRect(rc,&brush);
brush.DeleteObject();
}
for(int j=1;j<=N_InPut;j++)
{
int X_InPut,Y_InPut;
X_InPut=XLeft+((XRight-XLeft)/N_Max*j);
Y_InPut=YTop+(YBotton-YTop)/N_Max;
pDC->MoveTo(X_InPut,Y_InPut+(YBotton-YTop)/(N_Max*10));
pDC->LineTo(X_InPut,YBotton-((YBotton-YTop)/N_Max));
pDC->MoveTo(X_InPut,Y_InPut+(YBotton-YTop)/(N_Max*10));
pDC->LineTo(X_InPut-(XRight-XLeft)/(N_Max*10),Y_InPut);
pDC->MoveTo(X_InPut,Y_InPut+(YBotton-YTop)/(N_Max*10));
pDC->LineTo(X_InPut+(XRight-XLeft)/(N_Max*10),Y_InPut);
/************** 创建矩形区域并设置背景色 *********/
CRect rc(X_InPut-(XRight-XLeft)/(2*(N_Max))+1,
YTop,
X_InPut+(XRight-XLeft)/(2*(N_Max))-1,
YTop+(YBotton-YTop)/N_Max);
CBrush brush(RGB(143,188,223));
pDC->FillRect(rc,&brush);
brush.DeleteObject();
}
}
做到这一步基本上完成了整体布局,效果图如下:
接下来我们继续。。。(未完待续)
- VC菜鸟之路03_利用MFC绘制动态矩阵图——03
- VC菜鸟之路03_利用MFC绘制动态矩阵图
- VC菜鸟之路03_利用MFC绘制动态矩阵图——02
- 利用MFC绘制动态矩阵图
- MFC/VC++ 绘制正弦曲线
- 利用MATLAB 绘制矩阵色块图
- 菜鸟之路_触摸常量池
- 利用VC绘制对数坐标系
- 利用VC绘制对数坐标系
- MFC中绘制动态曲线
- MFC中绘制动态曲线
- MFC中绘制动态曲线
- MFC之绘制线条
- vc动态曲线绘制方法
- vc动态曲线绘制方法
- vc动态曲线绘制方法
- vc动态曲线绘制方法
- VC++之绘制线条
- Ibatis整合Mamcache时报错,classCastException
- java画自己的名字
- 一些常用的正则表达式 -转
- C# #if, #elif, #else和#endif预处理指令
- java.lang.ClassCastException: java.lang.Long cannot be cast to java.util.Date at org.hibernate.type.TimestampType.deepCopyNotNul
- VC菜鸟之路03_利用MFC绘制动态矩阵图
- 中国移动12580业务(战略部署)之我所见
- 一个Excel技巧,及其蕴含的编程规范思想
- sleep
- SQL Server 安装:以前的某个程序安装已在安装计算机上创建挂起的文件操作
- 免费在线求职指导讲座!兄弟连与CSDN携手助您职场前行!
- 1.2.4. Garbage Collection
- Hibernate批量处理
- 从《风声》想到的信仰问题