接着要做一个动态矩阵图,要求图能检测鼠标的位置做出相应改变,并能相应功能键。具体效果如下:
好吧,我承认这图里的东西不是我做的,我的目标就是仿照这个做个新东西出来。当然也必须具备它的功能。
下面开始吧,首先创建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();
}
}
做到这一步基本上完成了整体布局,效果图如下:
接下来我们继续。。。(未完待续)