GDI+
1,
编译error的话一般是却
#include <comdef.h>
#include <Windows.h>
Windows.h内会包含Windows.h,但是因为在stdafx.h中会智能创建WIN32_LEAN_AND_MEAN宏,会屏蔽comdef.h,这样就会导致声明缺失问题。
删除WIN32_LEAN_AND_MEAN宏或者手动添加包含comdef.h头文件就可以了。
2,
- #include <comdef.h>
- #include <Windows.h>
- #include "GDIPlusB.h"
- #include <gdiplus.h>
- using namespace Gdiplus;
- #pragma comment(lib,"gdiplus.lib")
- void CGDIPlusB::InitInstance()
- {
//GDI+的初始化- Gdiplus::GdiplusStartupInput gdiplusStartupInput;
- Gdiplus::GdiplusStartup(&m_gdiplusToken , &gdiplusStartupInput, NULL);
- }
- void CGDIPlusB::UnInstance()
- {
//关闭GDI+- Gdiplus::GdiplusShutdown(m_gdiplusToken);
- }
3,
- void CGDIPlusB::DrawAlphaPen( HDC* phdc )
- {
- COLORREF crBackClr = RGB( ,,);
- COLORREF crDark = RGB( , , );
- COLORREF crBright = RGB( ,,);
- Color GdiClrD,GdiClrB;//用于产生渐变效果;
- GdiClrD.SetFromCOLORREF(crDark);
- GdiClrB.SetFromCOLORREF(crBright);
- int r,g,b,r1,g1,b1;//分别得到明色和暗色的R G B值
- r = GdiClrD.GetRed();
- g = GdiClrD.GetGreen();
- b = GdiClrD.GetBlue();
- r1 = GdiClrB.GetRed();
- g1 = GdiClrB.GetGreen();
- b1 = GdiClrB.GetBlue();
- int alpha = ;
- //产生渐变的透明画刷
- Color GdiClrDark(alpha,r,g,b) ;
- Color GdiClrBright(alpha,r1,g1,b1) ;
- Gdiplus::Point pt_begin , pt_end ;
- SetRect( &m_rc , , , + , + ) ;
- pt_begin.X = m_rc.left ;
- pt_begin.Y = m_rc.top ;
- pt_end.X = m_rc.right ;
- pt_end.Y = m_rc.bottom ;
- LinearGradientBrush linGrBrush( pt_begin , pt_end , GdiClrDark,GdiClrBright );
- Pen pen0(&linGrBrush, );
- Graphics graphics( *phdc );
- graphics.DrawLine( &pen0 , pt_begin , pt_end ) ;
- graphics.ReleaseHDC( *phdc ) ;
- }
- void CGDIPlusB::DrawImage( HDC* phdc )
- {
- TCHAR img[MAX_PATH];
- _stprintf( img,_T("E:\\liuhanGit\\liuhan_memUI\\memUI\\memUI_SKIN\\p6.png")) ;
- Image image( img );
- Graphics graphics( *phdc );
- graphics.DrawImage( &image, , );
- graphics.ReleaseHDC( *phdc ) ;
- }
- void CGDIPlusB::DrawGradientBrush( HDC* phdc )
- {
- COLORREF crBackClr = RGB( ,,);
- COLORREF crDark = RGB( , , );
- COLORREF crBright = RGB( ,,);
- Color GdiClrD,GdiClrB;//用于产生渐变效果;
- GdiClrD.SetFromCOLORREF(crDark);
- GdiClrB.SetFromCOLORREF(crBright);
- int r,g,b,r1,g1,b1;//分别得到明色和暗色的R G B值
- r = GdiClrD.GetRed();
- g = GdiClrD.GetGreen();
- b = GdiClrD.GetBlue();
- r1 = GdiClrB.GetRed();
- g1 = GdiClrB.GetGreen();
- b1 = GdiClrB.GetBlue();
- int alpha = ;
- //产生渐变的透明画刷
- Color GdiClrDark(alpha,r,g,b) ;
- Color GdiClrBright(alpha,r1,g1,b1) ;
- Gdiplus::Point pt_begin , pt_end ;
- SetRect( &m_rc , , , + , + ) ;
- pt_begin.X = m_rc.left ;
- pt_begin.Y = m_rc.top ;
- pt_end.X = m_rc.right ;
- pt_end.Y = m_rc.bottom ;
- Brush* bsh0 = new LinearGradientBrush( pt_begin , pt_end , GdiClrDark,GdiClrBright ) ;
- Graphics graphics( *phdc );
- graphics.FillRectangle( bsh0 , m_rc.left , m_rc.top , m_rc.right - m_rc.left , m_rc.bottom - m_rc.top ) ;
- delete bsh0 ;
- graphics.ReleaseHDC( *phdc ) ;
- }
- void CGDIPlusB::DrawGradientBrush2( HDC* phdc )
- {
- Gdiplus::Point pt_begin , pt_end ;
- SetRect( &m_rc , , , + , + ) ;
- pt_begin.X = m_rc.left ;
- pt_begin.Y = m_rc.top ;
- pt_end.X = m_rc.right ;
- pt_end.Y = m_rc.bottom ;
- LinearGradientBrush linGrBrush( pt_begin , pt_end ,Color(,,,),Color(,,,));
- Color colors[] = {
- Color(, , , ), // red
- Color(, , , ), //yellow
- Color(, , , ), // blue
- Color(, , , )}; // green
- REAL positions[] = {
- 0.0f,
- 0.33f,
- 0.66f,
- 1.0f};
- linGrBrush.SetInterpolationColors(colors, positions,);
- Graphics graphics( *phdc );
- graphics.FillRectangle( &linGrBrush , m_rc.left , m_rc.top , m_rc.right - m_rc.left , m_rc.bottom - m_rc.top ) ;
- graphics.ReleaseHDC( *phdc ) ;
- }
GDI+的更多相关文章
- 超全面的.NET GDI+图形图像编程教程
本篇主题内容是.NET GDI+图形图像编程系列的教程,不要被这个滚动条吓到,为了查找方便,我没有分开写,上面加了目录了,而且很多都是源码和图片~ (*^_^*) 本人也为了学习深刻,另一方面也是为了 ...
- (转载)GDI+双缓冲
双缓冲在GDI+里可以有效的提高描画效率.改善显示的质量. 下面的代码是一个最简单的双缓冲的模板.可以根据需要,做简单的修改即可. Bitmap CacheImage( [Width], [Heigh ...
- (转载)解决GDI闪烁
一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁. 先来谈谈闪烁产生的原因 原因一:如果熟悉显卡原理的话,调用GDI函数向屏幕输出的 ...
- 通过GDI+绘制 验证码
只为了记录下自己的学习历程,方便日后查看 现在开始言归正传,以下为其完整代码附上 using System; using System.Collections.Generic; using Syste ...
- 【VC++技术杂谈007】使用GDI+进行图片格式转换
本文主要介绍如何使用GDI+对图片进行格式转换,可以转换的图片格式为bmp.jpg.png. 1.加载GDI+库 GDI+是GDI图形库的一个增强版本,提供了一系列Visual C++ API.为了使 ...
- C# GDI绘制矩形框,鼠标左键拖动可移动矩形框,滚轮放大缩小矩形框
最近工作需要,要做一个矩形框,并且 用鼠标左键拖动矩形框移动其位置.网上查了一些感觉他们做的挺复杂的.我自己研究一天,做了一个比较简单的,发表出来供大家参考一下.如觉得简单,可路过,谢谢.哈哈. 先大 ...
- 【Windows编程】系列第五篇:GDI图形绘制
上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图.Windows的GDI函数包含数 ...
- GDI+ 笔记
1.GDI+模板 #include<windows.h> #include<GdiPlus.h> #include <time.h> #include <ma ...
- C# GDI+发生一般性错误(A generic error occurred in GDI+))
解决思路: 1. 因为 .net GDI+ 是对底层 的封装. 所以可以尝试用 Marshal.GetLastWin32Error();函数获得底层错误代码. try{ image.Save(file ...
- GDI与GDI+ 贴图性能对比
在做绘图相关工作,由于对显示绘制结果实时性有要求,筛选了GDI , 与GDI+ 贴图性能. 这里假设在内存中已绘制完成一张图片,现需求显示在控件上,同时,总是更新全部区域. GDI+ 实现 priva ...
随机推荐
- Codeforces Gym 100286B Blind Walk DFS
Problem B. Blind WalkTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/cont ...
- [置顶] VC++界面编程之--自定义CEdit(编辑框)皮肤
自定义编辑框是登陆界面经常用到的效果,所以我也模仿站酷网的素材做了个. 要想继承CCustomDraw来完全自绘CEdit控件,是不太可行的方案,因为一旦你完全重绘,那么你需要额外做以下几件事: 1. ...
- X64 Win7(win2008)连接SqlServer2005慢的解决办法
问题描述:数据库版本:SQL SERVER 2005数据库安装环境: Win 2003 X64 客户端环境:Win 2008 x64连接工具:ODBC或ado.net测试连接时间:4-6秒 客户端环境 ...
- Github上最全的APICloud开源前端框架效果盘点(转)
1.微信网站几分钟变身“原生 App” 微信推出了微信JS-SDK,使微信公共号可以直接调用微信原生的接口,具备部分原生应用的能力.微信JS-SDK的推出,将大大提高微信公共号的 用户体验,但是如果存 ...
- aspose.cells 模版
aspose.cells 模版 http://www.cnblogs.com/whitewolf/archive/2011/03/21/Aspose_Cells_Template1.html
- 基础笔记(一)Java 集合
集合日常用到的有List,Set,Map等等. List List常用的有2种,包括ArrayList与LinkedList.这两种List的主要区别在于底层的数据结构的差别.ArrayList是基于 ...
- 项目源码--Android应用商店源码
下载源码 技术要点: 1.互联网应用 客户端框架 2.综合应用开发所 有技术 3.安装应用的管理 4. HTTP网络通信技 术 5.下载安装.评论 框架 6.使用.版本升级 等统计方案 7.源 ...
- Java_Spring MVC_Servlet
Spring MVC 例子 http://www.cnblogs.com/liukemng/p/3724379.html 详解: http://jinnianshilongnian.iteye.com ...
- C++_归并排序
//合并有序数组 //合并例子 void MemeryArray(int a[], int n, int b[],int m, int c[]) { int i,j,k; i=j=k=0; while ...
- MPEG简介 + 如何计算CBR 和VBR的MP3的播放时间
1. 声明本文所写内容,多数整理自互联网,版权归原作者所有笔者知识有限,文中难免有误,欢迎批评指正,admin (at) crifan.com觉得此文对你有帮助,想要发邮件来感谢的,也欢迎哈,^_^欢 ...