2025年MFC绘图操作

MFC绘图操作有些事说出来显得我不大度 但我确实不开心 如果你不懂我 那错的都是我 网易云热评 一 新建 MFC 应用程序 二 在菜单栏新加画图项 三 类向导添加绘图命令 项目 类向导 四 显示 aiyou 代码 void CMFC 绘图 View OnHuahua

大家好,我是讯享网,很高兴认识大家。

有些事说出来显得我不大度,但我确实不开心,如果你不懂我,那错的都是我。。。

----  网易云热评

 

一、新建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);}

 

欢迎关注公众号:顺便编点程

小讯
上一篇 2025-02-17 12:37
下一篇 2025-02-17 12:00

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/128595.html