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

目录
相关文章
|
6月前
MFC绘图操作
MFC绘图操作
36 0
|
6月前
|
API C语言 图形学
EasyX图形库学习(一、窗口创建函数initgraph、背景颜色设置setbkcolor、图形绘制函数)
EasyX图形库学习(一、窗口创建函数initgraph、背景颜色设置setbkcolor、图形绘制函数)
|
6月前
win32编程 -- GDI绘图操作
win32编程 -- GDI绘图操作
53 0
|
Windows
Windows程序设计——GDI基本画图的操作实现
Windows程序设计——GDI基本画图的操作实现
302 0
|
Web App开发 开发框架 算法
Qt使用GDI绘图(仅Windows平台)
Qt使用GDI绘图(仅Windows平台)
953 0
|
缓存 索引 Windows
MFC单文档应用程序显示图像
1 利用VS2010向导创建一个MFC单文档应用程序MFCTest 2 在MFCTestView.h中引用<atlimage.h>,并创建一个CImage对象 #include <atlimage.h> private: CImage image;3 打开资源文件,选中Menu下面的IDR_MAINFRAME,添加一个新的菜单项“打开图像”,修改其ID为I
996 0