GDI+

时间:2021-07-21 04:56:40

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,

GDI+

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

  1. 超全面的&period;NET GDI&plus;图形图像编程教程

    本篇主题内容是.NET GDI+图形图像编程系列的教程,不要被这个滚动条吓到,为了查找方便,我没有分开写,上面加了目录了,而且很多都是源码和图片~ (*^_^*) 本人也为了学习深刻,另一方面也是为了 ...

  2. &lpar;转载&rpar;GDI&plus;双缓冲

    双缓冲在GDI+里可以有效的提高描画效率.改善显示的质量. 下面的代码是一个最简单的双缓冲的模板.可以根据需要,做简单的修改即可. Bitmap CacheImage( [Width], [Heigh ...

  3. &lpar;转载&rpar;解决GDI闪烁

    一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁. 先来谈谈闪烁产生的原因 原因一:如果熟悉显卡原理的话,调用GDI函数向屏幕输出的 ...

  4. 通过GDI&plus;绘制 验证码

    只为了记录下自己的学习历程,方便日后查看 现在开始言归正传,以下为其完整代码附上 using System; using System.Collections.Generic; using Syste ...

  5. 【VC&plus;&plus;技术杂谈007】使用GDI&plus;进行图片格式转换

    本文主要介绍如何使用GDI+对图片进行格式转换,可以转换的图片格式为bmp.jpg.png. 1.加载GDI+库 GDI+是GDI图形库的一个增强版本,提供了一系列Visual C++ API.为了使 ...

  6. C&num; GDI绘制矩形框,鼠标左键拖动可移动矩形框,滚轮放大缩小矩形框

    最近工作需要,要做一个矩形框,并且 用鼠标左键拖动矩形框移动其位置.网上查了一些感觉他们做的挺复杂的.我自己研究一天,做了一个比较简单的,发表出来供大家参考一下.如觉得简单,可路过,谢谢.哈哈. 先大 ...

  7. 【Windows编程】系列第五篇:GDI图形绘制

    上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图.Windows的GDI函数包含数 ...

  8. GDI&plus; 笔记

    1.GDI+模板 #include<windows.h> #include<GdiPlus.h> #include <time.h> #include <ma ...

  9. C&num; GDI&plus;发生一般性错误(A generic error occurred in GDI&plus;&rpar;)

    解决思路: 1. 因为 .net GDI+ 是对底层 的封装. 所以可以尝试用 Marshal.GetLastWin32Error();函数获得底层错误代码. try{ image.Save(file ...

  10. GDI与GDI&plus; 贴图性能对比

    在做绘图相关工作,由于对显示绘制结果实时性有要求,筛选了GDI , 与GDI+ 贴图性能. 这里假设在内存中已绘制完成一张图片,现需求显示在控件上,同时,总是更新全部区域. GDI+ 实现 priva ...

随机推荐

  1. 【C语言入门教程】7&period;5 枚举

    在实际应用中,有的变量只有几种可能取值.如人的性别只有两种可能取值,星期只有七种可能取值.在 C 语言中对这样取值比较特殊的变量可以定义为枚举类型.所谓枚举是指将变量的值一一列举出来,变量只限于列举出 ...

  2. js&plus;css3文字模糊代码

    在写文字模糊的时候要理清自己的思路,根据以下的步骤来: 对你要模糊的文字进行布局 <body style="background:#ccc;"> <ul clas ...

  3. iphone获取sim卡信息

    /* iphone获取sim卡信息 1.加入一个Framework(CoreTelephony.framework). 2.引入头文件 #import <CoreTelephony/CTTele ...

  4. 转 : ANT 调用sqlplus 客户端

    Jenkins安装与配置  (版本控制) 1 用ant脚本执行sql语句现在我需要写一个ant脚本来实现项目安装,情况是这样的,客户现在运行的版本可能是2.0,安装目录里可能有REL_1_0,REL_ ...

  5. Oracle Sql优化之报表和数据仓库运算

    1.行转列:有两种写法,一种是case when end写法,另一种写法是pivot(oracle 11g新增) select job, then sal end) as sal10, then sa ...

  6. 小强的HTML5移动开发之路(2)——HTML5的新特性

    来自:http://blog.csdn.net/dawanganban/article/details/17592787 一.画布(Canvas) 画布是网页中的一块区域,可所以用JavaScript ...

  7. mac下 将python2&period;7改为python3

    1.查看当前电脑python版本 python -V // 显示2.7.x 2.用brew升级python brew update python 3.如果安装成功,去系统目录下回看到两个版本的pyth ...

  8. js实现数组去重的几种方法

    1.简单结构的数组,例如[1,2,3,3,4],使用es6提供的Set和Array.from Set:是一种新的数据结构,可以接收一个数组或者是类数组对象,自动去重其中的重复项目. 类数组对象:只包含 ...

  9. 关于两栏布局,三栏布局,一级点击三角触发select的onchange事件问题

    首先看这样一个效果:,这个截图来自移动端的列表的一整行,在这个效果当中,存在两个技术点,首先选择祝福卡这个宽度是一定的,右边的部分,宽度随着手机屏幕的宽度而自适应,再一个技术点就是点击最右侧向下箭头, ...

  10. C&num;使用AppDomain时的异常分析:Object &OpenCurlyQuote;XXXX&period;rem’ has been disconnected or does not exist at the server&period;

    在使用C#的应用程序域的时候,碰到这么一个异常: System.Runtime.Remoting.RemotingException: Object ‘/76e7cd41_2cd2_4e89_9c03 ...