GDI+学习笔记(8)MFC图片控件中显示一张图片
请尊重本人的工作成果,转载请留言,并说明转载地址,谢谢。地址如下:
http://blog.csdn.net/fukainankai/article/details/27710883
不得不说,人的惰性是很可怕的,稍微懒惰一下,时间就会溜得飞起。
在本系列之前的文章中,相信大家基本上已经了解了如何在win32环境下使用gdi+绘制一些简单的图形,然而,实际上很多朋友在使用gdi+的时候往往需要用到MFC,其实,如果对我前面几片博客多看几遍,理解了,这些都不是太大的问题,虽然MFC隐藏了很多细节,但是这些并不会影响到我们队GDI+的使用。
(一)在基于对话框的图片控件中使用GDI+
我们创建一个基于对话框的MFC应用程序,我们取名叫做GDIPictureDlg,并在这个对话框中添加一个图片控件,并为其增加一个控件变量(Static可是没法添加变量的,新手须记得要改一下控件的id,偷懒不得!~)
在这个类的.h文件中我们添加头文件和名字空间,这和win32没有任何区别。
#include <objbase.h> #include <gdiplus.h> using namespace Gdiplus;
在对应的cpp中加载对应的lib
#pragma comment(lib, "gdiplus.lib")
在初始化对话框(OnInitDialog)时,初始化GDI+环境
// 初始化GDI+环境 GdiplusStartupInput gdiplusinput; GdiplusStartup(&m_token, &gdiplusinput, NULL);
在OnPaint中我们开始核心的绘制工作
CDC *pCDC = GetDlgItem(IDC_PICTURE)->GetDC(); HDC hdc = pCDC->GetSafeHdc(); Graphics grphics(hdc); RECT rect; GetDlgItem(IDC_PICTURE)->GetClientRect(&rect); Bitmap bitmap(rect.right-rect.left, rect.bottom-rect.top); Graphics grp(&bitmap); grp.Clear(Color::Blue); grphics.DrawImage(&bitmap, 0, 0);
我们这里是在图片控件上绘制了一个和图片控件客户区一样大小的bmp,bmp被填充成了蓝色。当然如果你需要绘制一张图片,那么这里的bitmap换成对应的Image即可,如果你忘记了该怎么做,可以参考我之前的几篇博客,很简单。
至此,我们就完成了图片控件中的图形绘制。看看效果吧:
好像很丑是吧,不好意思的是,我最近因为各种原因比较忙,所以很难有太多的时间去完善它,如果你想让它漂亮起来,就结合一下之前的博客好了。
(二)在文档的图形绘制
这里我只是简单的提一下,其实它的绘制方式比在图片控件中绘制更加简单一些,只不过这次是在OnDraw中绘制罢了,我这里就不贴代码了。
如果有任何问题,欢迎联系我,我的qq:397149636,当然你也可以加入我的开发群和大家一起探讨,群号: 69788620
这个系列的博客实际上仅仅是gdi+的入门篇,而我的初衷更是希望这个系列博客能够让很多对GDI/GDI+感到很棘手的朋友,在绘制图形的时候感到轻松和快意,所以,我往往没有详细的描述所有参数,所有重载函数,更没有描述所有的功能。我只是希望,大家想绘制图形的时候,到这里看几眼就可以上手进行工作,如果你希望有更加详细的了解,请参阅msdn,谢谢。