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+一起使用的更多相关文章

  1. MFC 用gdi绘制填充多边形区域

    MFC 用gdi绘制填充多边形区域 这里的代码是实现一个三角形的绘制,并用刷子填充颜色 在OnPaint()函数里面 运用的是给定的三角形的三个点,很多个点可以绘制多边形 CBrush br(RGB( ...

  2. mfc配置GDI+有106个错误

    mfc配置GDI+有106个错误,处理如下,参考http://bbs.csdn.net/topics/380054079 一开始#include...放在stdafx.h里有错误,后来上面修改好了,放 ...

  3. VS2010 MFC 使用GDI+给图片添加汉字

    1.配置GDI+ VS2010自带GDI+,直接使用. (1)首先要添加头文件和库 #pragma comment( lib, "gdiplus.lib" ) #include & ...

  4. MFC用GDI+动感歌词的制作

    源代码:http://download.csdn.net/detail/nuptboyzhb/4219669 源代码: 1.       插入一个对话框的资源,删除默认控件,并为对话框创建一个类,命名 ...

  5. MFC GDI绘图基础

    一.关于GDI的基本概念 什么是GDI? Windows绘图的实质就是利用Windows提供的图形设备接口GDI(Graphics Device Interface)将图形绘制在显示器上. 在Wind ...

  6. scxml 图像展示器 (基于C++ MFC GDI tinyxpath的实现)

    以前的时候学习新东西没有总结的习惯,周末把以前研究的东西翻了翻,稍微总结下. Scxml是w3c出来的基于状态机的对话脚本语言标准,具体内容可以谷歌到,这里讲述自己开发的一个把scxml转化为可交互图 ...

  7. GDI+编程说明及小结

    原文地址:http://blog.csdn.net/byxdaz/article/details/5972759 GDI+(Graphics Device Interface Plus图形设备接口加) ...

  8. MFC映射

    所有CDC输出函数最终都会输出到物理平面(屏幕窗口.打印纸等).这些物理平面的单位量化往往多种多样,比如像素.打印点.英寸.毫米等等.这样可能会造成很多混乱,所以CDC输出对所有物理平面进行统一抽象化 ...

  9. GDI+编程小结

    GDI+(Graphics Device Interface Plus图形设备接口加)是Windows XP和Windows Server 2003操作系统的子系统,也是.NET框架的重要组成部分,负 ...

随机推荐

  1. c3p0配置 initialPoolSize 和minPoolSize 可以设为0吗?设0有坏处吗?

    c3p0配置 initialPoolSize 和minPoolSize 可以设为0吗?设0有坏处吗? c3p0配置 initialPoolSize 和minPoolSize 可以设为0吗?设0有坏处吗 ...

  2. maven常用插件总结

    maven本质上是一个插件框架,几乎所有的功能都是通过各种各样的插件来实现的.maven默认会依据项目类型自动把构建时的各阶段(Lifecycle和phase)自动绑定(Lifecycle Mappi ...

  3. php isset() empty() 区别, 判断 变量存在与否神器

    先看PHP手册: bool empty ( mixed $var ) 判断一个变量是否被认为是空的.当一个变量并不存在,或者它的值等同于FALSE,那么它会被认为不存在.如果变量不存在的话,empty ...

  4. mac下限速

    sudo ipfw pipe 1 config bw 15KByte/s #设置带宽 sudo ipfw add 1 pipe 1 src-port 80 sudo ipfw add 1 pipe 1 ...

  5. JQUERY 一些技巧在实际中的应用

    在jquery选择器中.继续做判断$("tr[rel!=" + id + "]").find('.status').html('--'); $("tr ...

  6. Shared libraries

    Computer Systems A Programmer's Perspective Second Edition Shared libraries are modern innovations t ...

  7. 制作3D图片立方体旋转特效

    <!DOCTYPE html><html><head><meta charset="utf-8" /><title>CS ...

  8. uploadify

    uploadify 返回值(回调函数)总结: 最近使用开发一个图片上传模块的时候使用了一个jq插件--uploadify,但是下面就是让人很苦逼的一个下午……一直调试不好,无法接收返回值.google ...

  9. 使用VC2005编译真正的静态Qt程序

    首先,你应该该知道什么叫静态引用编译.什么叫动态引用编译.我这里只是简单的提提,具体的可以google一下. 动态引用编译,是指相关的库,以dll的形式引用库.动态编译的Exe程序尺寸比较小,因为相关 ...

  10. 【Android开发学习笔记】【第八课】五大布局-下

    概念 五大布局上一篇文章已经介绍了 LinearLayout RelativeLayout 这一篇我们介绍剩下的三种布局 FrameLayout 五种布局中最佳单的一种布局.在这个布局在整个界面被当成 ...