前言:
当前我们对“mfc显示位图”都比较关注,兄弟们都想要了解一些“mfc显示位图”的相关文章。那么小编也在网上搜集了一些关于“mfc显示位图””的相关内容,希望小伙伴们能喜欢,我们快快来学习一下吧!有些事说出来显得我不大度,但我确实不开心,如果你不懂我,那错的都是我。。。
---- 网易云热评
一、新建MFC应用程序
二、在菜单栏新加画图项
三、类向导添加绘图命令,项目---类向导
四、显示aiyou代码
void CMFC绘图View::OnHuahua(){ //创建对象,在视图对象里画 CClientDC dc(this); dc.TextOutA(100, 100, "aiyou");//::TextOut(dc.m_hDC, 100, 100, "hello client", strlen("aiyou"));}
五、运行结果
六、添加绘图消息
七、画一个矩形
void CMFC绘图View::OnPaint(){ CPaintDC dc(this); // device context for painting // TODO: 在此处添加消息处理程序代码 // 不为绘图消息调用 CView::OnPaint() dc.Rectangle(100, 100, 300, 300); //::Rectangle( dc.m_hDC, 100, 100, 300, 300 );}
注意:最小化窗口,发现绘图消息还保留,aiyou不见了,需要重新点击生成
八、CGDIObject类讲解
1、新建菜单项,画笔、画刷、字体、位图、复合图
2、类向导添加相关的命令
3、代码如下:
void CMFC绘图View::OnHuabi(){ CClientDC dc(this); //创建画笔10像素,红色 CPen pen(PS_SOLID, 10, RGB(255, 0, 0)); /*CPen* oldpen = dc.SelectObject(&pen); dc.Ellipse(100, 100, 200, 200); //销毁画笔 dc.SelectObject(oldpen); pen.DeleteObject();*/ HGDIOBJ nOldPen = ::SelectObject(dc.m_hDC, pen.m_hObject); ::Ellipse(dc.m_hDC, 100, 100, 200, 200); ::SelectObject(dc.m_hDC, nOldPen); ::DeleteObject(pen.m_hObject);}void CMFC绘图View::OnHuashau(){ CClientDC dc(this); CBrush brush(RGB(0, 255, 0)); CBrush* oldbrush = dc.SelectObject(&brush); dc.Ellipse(100, 100, 300, 300); dc.SelectObject(oldbrush); brush.DeleteObject();}void CMFC绘图View::OnZiti(){ CClientDC dc(this); CFont font; font.CreatePointFont(100, "宋体"); CFont* oldfont = dc.SelectObject(&font); dc.TextOut(200, 100, "哎呦"); dc.SelectObject(oldfont); font.DeleteObject();}
4、从资源里添加位图
首先创建一个位图
void CMFC绘图View::OnWeitu(){ CClientDC dc(this); //添加资源 CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1); CDC memdc; memdc.CreateCompatibleDC(&dc); CBitmap* oldbmp = memdc.SelectObject(&bmp); dc.BitBlt(200, 200, 48, 48, &memdc, 0, 0, SRCCOPY); memdc.SelectObject(oldbmp); bmp.DeleteObject(); memdc.DeleteDC();}
5、复合图实现
void CMFC绘图View::OnFht(){ CClientDC dc(this); CRgn rgn1, rgn2; rgn1.CreateEllipticRgn(100, 100, 300, 300); rgn2.CreateEllipticRgn(200, 200, 500, 500); //将基本图形进行或运算 rgn1.CombineRgn(&rgn1, &rgn2, RGN_OR); //给复合图形填充颜色 CBrush brush2(RGB(0, 255, 0)); dc.FillRgn(&rgn1, &brush2); //给复合图形描绘线条 CBrush brush(RGB(255, 0, 0)); dc.FrameRgn(&rgn1, &brush, 10, 1);}
欢迎关注公众号:顺便编点程
标签: #mfc显示位图