MFC绘图操作

简介: MFC绘图操作

一、新建MFC应用程序


0a2653c851af460fa595bd959398a8f1.png0eacb84100b54626af849e6b562bf92a.png


二、在菜单栏新加画图项


2d65d23f6d4748949b924e4057485923.png


三、类向导添加绘图命令,项目---类向导


2e9b90b2ca334476abebe75bafe6eeaa.png


四、显示aiyou代码


void CMFC绘图View::OnHuahua()
{      
       //创建对象,在视图对象里画
       CClientDC dc(this);
       dc.TextOutA(100, 100, "aiyou");
//::TextOut(dc.m_hDC, 100, 100, "hello client", strlen("aiyou"));
}


五、运行结果


0a2653c851af460fa595bd959398a8f1.png


六、添加绘图消息


0eacb84100b54626af849e6b562bf92a.png


七、画一个矩形


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 );
}

2d65d23f6d4748949b924e4057485923.png


注意:最小化窗口,发现绘图消息还保留,aiyou不见了,需要重新点击生成


八、CGDIObject类讲解


1、新建菜单项,画笔、画刷、字体、位图、复合图


0a2653c851af460fa595bd959398a8f1.png


2、类向导添加相关的命令


0eacb84100b54626af849e6b562bf92a.png


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、从资源里添加位图


首先创建一个位图


2d65d23f6d4748949b924e4057485923.png


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);
}

0a2653c851af460fa595bd959398a8f1.png

目录
相关文章
|
7月前
MFC绘图操作
MFC绘图操作
42 0
|
7月前
|
API C语言 图形学
EasyX图形库学习(一、窗口创建函数initgraph、背景颜色设置setbkcolor、图形绘制函数)
EasyX图形库学习(一、窗口创建函数initgraph、背景颜色设置setbkcolor、图形绘制函数)
|
7月前
win32编程 -- GDI绘图操作
win32编程 -- GDI绘图操作
64 0
|
7月前
|
容器
pyqtgraph绘图类
pyqtgraph绘图类
118 1
|
API 图形学
【Win32绘图编程,GDI绘图对象】绘图基础,位图处理,绘图消息处理,画笔,画刷,文本绘制(上)
【Win32绘图编程,GDI绘图对象】绘图基础,位图处理,绘图消息处理,画笔,画刷,文本绘制
|
算法 数据可视化 Windows
【Win32绘图编程,GDI绘图对象】绘图基础,位图处理,绘图消息处理,画笔,画刷,文本绘制(下)
【Win32绘图编程,GDI绘图对象】绘图基础,位图处理,绘图消息处理,画笔,画刷,文本绘制
|
Windows
Windows程序设计——GDI基本画图的操作实现
Windows程序设计——GDI基本画图的操作实现
313 0
|
缓存 索引 Windows