MFC和GDI+一起使用
VS2010,新建MFC项目,在头文件stdafx.h中添加:
- #include <gdiplus.h>
- using namespace Gdiplus;
- #pragma comment (lib,"Gdiplus.lib")
定义类的变量 ULONG_PTR gdiplusToken;
在BOOL CGDALDesktopApp::InitInstance()中添加:
- GdiplusStartupInput gdiplusStartupInput;
2 GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
在ExitInstance()中添加:
- int CGDALDesktopApp::ExitInstance()
- {
- //TODO: 处理可能已添加的附加资源
- AfxOleTerm(FALSE);
- GdiplusShutdown(gdiplusToken);
- return CWinAppEx::ExitInstance();
- }
添加绘制的代码:
- void CGDALDesktopView::OnDraw(CDC* pDC)
- {
- CGDALDesktopDoc* pDoc = GetDocument();
- ASSERT_VALID(pDoc);
- if (!pDoc)
- return;
- //Graphics graphics(*pDC);
- Graphics g( pDC->GetSafeHdc() );
- //建立画笔
- Pen pen_black(Color::Black);
- Pen pen_white(Color::White);
- //使用画笔绘制图形
- pen_black.SetWidth(); //设置画笔宽度
- pen_black.SetStartCap(LineCapRoundAnchor); //设置开始笔帽
- pen_black.SetEndCap(LineCapArrowAnchor); //设置结束笔帽
- g.DrawLine(&pen_black, , , , );
- Rect rect1(,, , );
- Rect rect2( + , , , );
- Rect rect3( + *, , , );
- Rect rect4( + *, , , );
- g.DrawRectangle(&pen_black, rect1);
- g.DrawRectangle(&pen_black, rect2);
- g.DrawRectangle(&pen_black, rect3);
- g.DrawRectangle(&pen_black, rect4);
- //建立画刷
- //实色画刷
- SolidBrush brush_black(Color::Black);
- SolidBrush brush_white(Color::White);
- SolidBrush brush_blue(Color::Blue);
- g.FillRectangle(&brush_blue, rect1);
- //网格画刷
- HatchBrush brush_hatch( HatchStyleDiagonalBrick, Color(, , , ), Color(, , , ));
- g.FillRectangle(&brush_hatch, rect2);
- //贴图画刷
- Image image(L"res\\qq.gif");
- TextureBrush brush_texture(&image);
- g.FillRectangle(&brush_texture, rect3);
- //渐变画刷(线形渐变)
- LinearGradientBrush brush_gradient_line( Point(, ), Point(, ),Color(, , , ), Color(, , , ));
- g.FillRectangle(&brush_gradient_line, rect4);
- //渐变画刷(路径渐变)
- //PathGradientBrush......................
- //贴图画笔
- Pen pen_texture(&brush_texture, );
- g.DrawEllipse(&pen_texture, , , ,);
- //启动抗锯齿功能
- pen_black.SetWidth();
- g.SetSmoothingMode(SmoothingModeAntiAlias);
- g.DrawLine(&pen_black, , , , );
- //绘制图像
- // 不进行缩放
- g.DrawImage(&image, ,);
- // 使用低质量的插补算法
- g.SetInterpolationMode(InterpolationModeNearestNeighbor);
- g.DrawImage( &image, Rect(,, , ));
- // 使用中等质量的插补算法
- g.SetInterpolationMode(InterpolationModeHighQualityBilinear);
- g.DrawImage( &image, Rect(,, , ));
- // 使用高质量的插补算法
- g.SetInterpolationMode(InterpolationModeHighQualityBicubic);
- g.DrawImage( &image, Rect(,, , ));
- //路径
- GraphicsPath path1;
- path1.AddLine(, , ,);
- path1.AddArc(, , , , , -);
- g.DrawPath(&pen_black, &path1);
- g.FillPath(&brush_black, &path1);
- //区域
- GraphicsPath pathOuter;
- pathOuter.AddRectangle(Rect(, , ,));
- GraphicsPath pathInner;
- pathInner.AddEllipse(Rect(, , ,));
- Region rgn(&pathOuter);
- rgn.Exclude(&pathInner);
- g.FillRegion(&brush_blue, &rgn);
- // TODO: 在此处为本机数据添加绘制代码
- }
MFC和GDI+一起使用的更多相关文章
- MFC 用gdi绘制填充多边形区域
MFC 用gdi绘制填充多边形区域 这里的代码是实现一个三角形的绘制,并用刷子填充颜色 在OnPaint()函数里面 运用的是给定的三角形的三个点,很多个点可以绘制多边形 CBrush br(RGB( ...
- mfc配置GDI+有106个错误
mfc配置GDI+有106个错误,处理如下,参考http://bbs.csdn.net/topics/380054079 一开始#include...放在stdafx.h里有错误,后来上面修改好了,放 ...
- VS2010 MFC 使用GDI+给图片添加汉字
1.配置GDI+ VS2010自带GDI+,直接使用. (1)首先要添加头文件和库 #pragma comment( lib, "gdiplus.lib" ) #include & ...
- MFC用GDI+动感歌词的制作
源代码:http://download.csdn.net/detail/nuptboyzhb/4219669 源代码: 1. 插入一个对话框的资源,删除默认控件,并为对话框创建一个类,命名 ...
- MFC GDI绘图基础
一.关于GDI的基本概念 什么是GDI? Windows绘图的实质就是利用Windows提供的图形设备接口GDI(Graphics Device Interface)将图形绘制在显示器上. 在Wind ...
- scxml 图像展示器 (基于C++ MFC GDI tinyxpath的实现)
以前的时候学习新东西没有总结的习惯,周末把以前研究的东西翻了翻,稍微总结下. Scxml是w3c出来的基于状态机的对话脚本语言标准,具体内容可以谷歌到,这里讲述自己开发的一个把scxml转化为可交互图 ...
- GDI+编程说明及小结
原文地址:http://blog.csdn.net/byxdaz/article/details/5972759 GDI+(Graphics Device Interface Plus图形设备接口加) ...
- MFC映射
所有CDC输出函数最终都会输出到物理平面(屏幕窗口.打印纸等).这些物理平面的单位量化往往多种多样,比如像素.打印点.英寸.毫米等等.这样可能会造成很多混乱,所以CDC输出对所有物理平面进行统一抽象化 ...
- GDI+编程小结
GDI+(Graphics Device Interface Plus图形设备接口加)是Windows XP和Windows Server 2003操作系统的子系统,也是.NET框架的重要组成部分,负 ...
随机推荐
- JavaScript系列:常用方法
文本框输入实时验证身份证号 charAt(索引)<=>indexOf(字符) <!DOCTYPE html> <head> <meta charset=&qu ...
- 【转】区别和认识.Net四个判等函数
原文地址:不详 .Net有四个判等函数?不少人看到这个标题,会对此感到怀疑.事实上确是如此,.Net提供了ReferenceEquals.静态Equals,具体类型的Equals以及==操作符这四个判 ...
- Linux常用命令(持续更新中)
cd 目录名 :进入某个目录 ls :列出当前目录的内容 locate 文件名/目录名:寻找文件.目录 find 目录名1 -name 文件名/目录名2 :在目录1中寻找目录2 whereis 文件 ...
- Ant Tasks 使用总结
xmlproperty http://ant.apache.org/manual/Tasks/xmlproperty.html Ant的xmlproperty的Task能直接读取一个xml文件以生成相 ...
- 2016.07.14,英语,《Vocabulary Builder》Unit 25
verb: comes from the Latin verbum, meaning 'word'. verbally: ['vɜːbəli] adv. 口头地,词句地, 逐字地 verbalize: ...
- HDR the Bungie Way PPT and demo from MSFT
Gamefest 2006 - HDR the Bungie Way Posted By: Falagard <falagard@hotmail.com> Date: 4/26/07 9: ...
- [ZZ] The Naked Truth About Anisotropic Filtering
http://www.extremetech.com/computing/51994-the-naked-truth-about-anisotropic-filtering In the seemin ...
- GTX 770 (GK 104)
上周的这个时候,NVIDIA GeForce 700系列的旗舰产品GTX 780正式发布,传闻已久的GTX 700家族终于来了!虽然没有任何新架构.新特性的旗舰卡发布总让人觉得少点什么.但从性能上来说 ...
- /etc/hosts.conf
一 作用 指定如何解析主机域名.可设置网络安全. 二 参数说明 默认情况,/etc/hosts.conf 文件有如下内容—— order hosts,bind ...
- Rails--bundle exec rake db:migrate
--新建表: def up create_table :[TABLE_NAME] do |t| t.column :[NUM], :integer t.column :[NAME], :string ...