MFC绘制棋盘格
(1)新建立一个MFC空白的基于视类的工程
(2)在View类中重写OnPaint消息
void CMy005View::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here // Do not call CView::OnPaint() for painting messages //客户区绘图 /*HDC hdc; hdc=::GetDC(m_hWnd); MoveToEx(hdc,0,0,NULL); LineTo(hdc,200,200); ::ReleaseDC(m_hWnd,hdc);*/ CDC *pdc; pdc=GetDC(); //绘制棋盘 CPen pen(PS_SOLID, 2, RGB(0,0,0)); CPen *pOldpen = pdc->SelectObject(&pen);//获取指针 int Ox=100; int Oy=100; int numx=10;//行数 int numy=10;//列数 for(int i=0;i<numx;i++)//画列线 { pdc->MoveTo(Ox+30*i,Oy); pdc->LineTo(Ox+30*i,370); } for(int j=0;j<numy;j++)//画行线 { pdc->MoveTo(100,Oy+30*j); pdc->LineTo(370,Oy+30*j); } /*CDC::FillRect CBrush() Cbrush brush((RGB(255, 0, 0)); dc.FilllRect(Crect(m_point, point), &brush);*/ //颜色填充 CBrush brush1(m_color); for(int n=0;n<numy;n=n+2) { for(int m=0;m<numx;m=m+2) { CRect rc(Ox+30*m,Oy+n*30,Ox+30+30*m,Oy+30+n*30); pdc->FillRect(rc,&brush1); } } CBrush brush2(RGB(0,0,255)); for(int p=1;p<numy-1;p=p+2) { for(int q=1;q<numx-1;q=q+2) { CRect rc(Ox+30*q,Oy+p*30,Ox+30+30*q,Oy+30+p*30); pdc->FillRect(rc,&brush2); } } //绘制多边形 /*CPoint ps[6]={CPoint(300,200),CPoint(300,300),CPoint(320,350),CPoint(400,400),CPoint(400,250)}; pdc->Polygon(ps,4);*/ //客户区绘图 /*pdc->MoveTo(0,0); pdc->LineTo(200,100); ReleaseDC(pdc); //整个窗口绘图 CWindowDC dw(GetParent()); dw.MoveTo(0,0); dw.LineTo(CPoint(300,300)); //非客户区绘图 CClientDC du(GetParent()); du.MoveTo(0,0); du.LineTo(CPoint(30,200)); UpdateData(true);*/ }
(3)如果想要在菜单中设置改变其中部分格子的颜色,可以在View类中添加一个COLORREF的数据成员
然后在新建的菜单的响应函数中添加下面的代码
CColorDialog cDlg; if(cDlg.DoModal()==IDOK) { //LOGFONT logfont; m_color=cDlg.GetColor(); OnPaint(); }
(4)运行后,出来的结果如下
原始的着色效果 改变颜色后的着色效果
参考代码:
1,pund,Basic-graphics, 2014.
你们的评论、反馈,及对你们有所用,是我整理材料和博文写作的最大的鼓励和唯一动力。欢迎讨论和关注!
没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。
没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。