GDI+学习笔记(8)MFC图片控件中显示一张图片

GDI+学习笔记(八)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即可,如果你忘记了该怎么做,可以参考我之前的几篇博客,很简单。


至此,我们就完成了图片控件中的图形绘制。看看效果吧:

GDI+学习笔记(8)MFC图片控件中显示一张图片


好像很丑是吧,不好意思的是,我最近因为各种原因比较忙,所以很难有太多的时间去完善它,如果你想让它漂亮起来,就结合一下之前的博客好了。


)在文档的图形绘制

这里我只是简单的提一下,其实它的绘制方式比在图片控件中绘制更加简单一些,只不过这次是在OnDraw中绘制罢了,我这里就不贴代码了。


如果有任何问题,欢迎联系我,我的qq:397149636,当然你也可以加入我的开发群和大家一起探讨,群号: 群号是69788620

这个系列的博客实际上仅仅是gdi+的入门篇,而我的初衷更是希望这个系列博客能够让很多对GDI/GDI+感到很棘手的朋友,在绘制图形的时候感到轻松和快意,所以,我往往没有详细的描述所有参数,所有重载函数,更没有描述所有的功能。我只是希望,大家想绘制图形的时候,到这里看几眼就可以上手进行工作,如果你希望有更加详细的了解,请参阅msdn,谢谢。