当前位置:文档之家› GDIGDI 从入门到精通-第三讲资料

GDIGDI 从入门到精通-第三讲资料


12
SolidBrush创建单色画刷
SolidBrush(const Color &color); 下列的代码创建了一个蓝色的单色画刷。 SolidBrush blueBrush(Color(255,0,0,255));
13
HatchBrush创建影线画刷
HatchBrush(HatchStyle hatchStyle, const Color& foreColor, const Color& backColor); hatchStyle:影线画刷的类型 foreColor:影线画刷线条的前景色 backColor:影线画刷线条的背景色。
19
Graphics绘制图片
把图片绘制在指定位置的方法如下: DrawImage(Image* image,const Point& point);
DrawImage(Image* image,INT x,INT y);
DrawImage(Image* image, const PointF& point) DrawImage(Image* image, REAL x, REAL y); 其中x,y为要绘制的位置,可为INT类型,也可为REAL类型。 point为要绘制的位置的结构体变量,可为Point类型(内部成员为INT类型),也可为PointF类型( 内部成员为REAL类型)。
11
常用的画刷
单色画刷,类名SolidBrush,用纯色填充图形。 影线画刷,类名HatchBrush,用各种线型图案填充图形。 纹理画刷,类名TextureBrush,使用图像来填充图形。 线性渐变画刷,类名LinearGradientBrush,使用渐变的色彩填充图 形,渐变是指一种颜色沿着指定的方向慢慢变为另一种颜色。
14
HatchBrush创建影线画刷
创建代码如下: Color black(255,0,0,0); Color white(255,255,255,255); HatchBrush brushA(HatchStyleHorizontal, black, white); //水平 横线 HatchBrush brushB(HatchStyleVertical, black, white); //垂直坚线
HatchBrush brushC(HatchStyleCross, black, white); //十字网格线
15
HatchBrush创建影线画刷
• 前景色与背景色的关系,就像 国际象棋盘,第一块为背景色 ,第二块为前景色,第三块为 背景色,如图:
16
TextureBrush创建纹理画刷
TextureBrush(Image *image); image为图像的指针。 如: Image image(L“TEXTURE.BMP”); TextureBrush textureBrush(&image);
24
Graphics绘制片
srcwidth,srcheight为图片指定区域的宽度与高度,可为INT类型, 也可为REAL类型。
srcUnit为Unit的枚举成员,它指定了所用的度量单位。
25
Graphics绘制文字
DrawString(const WCHAR *string, INT length, const Font *font, const PointF &origin, const Brush *brush); DrawString(const WCHAR *string, INT length, const Font *font, const RectF &layoutRect, const StringFormat *stringFormat, const Brush *brush); DrawString(const WCHAR *string, INT length, const Font *font, const PointF &origin, const StringFormat *stringFormat, const Brush *brush); 其中: string为要绘制的字符串,类型为const WCHAR*,宽字符指针。 length为要绘制的字符串的长串,如果该值为-1,表明绘制以NULL结尾的 string字符串。
7
Graphics类的构造
Graphics(HDC hdc); //以HDC构造Graphics,对Graphics的绘制操作,就绘制在hdc指定的位图中。
Graphics(HWND hwnd);
//以HWND构造Graphics,对Graphics的绘制操作,就绘制在hwnd窗口上。 Graphics(Image *image); //Image *是GDI+中的图像指针,对Graphics的绘制操作,就绘制在image所指的图 像对象中。
20
Graphics绘制图片
把图片绘制在指定区域的方法如下: DrawImage(Image* image, const Rect& rect); DrawImage(Image* image, INT x, INT y, INT width, INT height); DrawImage(Image* image, const RectF& rect); DrawImage(Image* image, REAL x, REAL y, REAL width, REAL height); 其中x,y为指定矩形区域的坐上角坐标,可为INT类型,也可为REAL类型。 width,height为指定矩形区域的宽度与高度,可为INT类型,也可为REAL类 型。 rect为指定的矩形区域,可为Rect类型(内部成员为INT类型),也可为 RectF类型(内部成员为REAL类型)。
2
GDI+的使用方法
在使用GDI+的cpp文件中包含GdiPlus.h文件,并引用命名空间 using namespace Gdiplus; 代码如下:
#include <GdiPlus.h>
using namespace Gdiplus;
3
GDI+的使用方法
需要在项目属性中作如下设置,以支持GDI+的静态库编译:
反初始化代码:
//销毁GDI+资源
GdiplusShutdown(uToKen);
6
透明度合成运算
透明度是像素之间的一种合成运算。它的计算公式是: 输出颜色=前景色*Alpha/255+背景色*(255-Alpha)/255 举个例子来说,假设有一个点,其颜色值为RGB(0,0,0),背景色值为 RGB(255,255,255),在进行输出时将透明度设置为100,输出的颜色为: Result.Red = 0*100/255+255*(255-100)/255 = 155 Result.Green = 0*100/255+255*(255-100)/255 = 155 Result.Blue = 0*100/255+255*(255-100)/255 = 155
18
Pen创建画笔
Pen(const Color &color, REAL width = 1.0f ); //color为画笔的颜色,width为画笔的宽度。 Pen(const Brush *brush, REAL width = 1.0f ); //brush为画刷的指针,width为画笔的宽度。通过画刷来构造 一个画笔,这种画笔绘制出来的线条,边框就犹如在一张带图案的纸 张上,剪出的指定宽度的线条,边框的效果。
9
Bitmap类的常用方法
Bitmap* Clone(const Rect& rect, PixelFormat format); Bitmap* Clone(INT x, INT y, INT width, INT height, PixelFormat format); Bitmap* Clone(const RectF &rect, PixelFormat format); Bitmap* Clone(REAL x, REAL y, REAL width, REAL height, PixelFormat format); //以上四个方法为Bitmap的拷贝方法,从源位图的指定区域拷贝出新的位图 对象出来,并用format像素格式应用在新的Bitmap对象中。
21
Graphics绘制图片
把图片的指定区域绘制在指定位置的方法如下: DrawImage(Image* image, INT x, INT y, INT srcx, INT srcy, INT srcwidth, INT srcheight, Unit srcUnit); DrawImage(Image* image, REAL x, REAL y, REAL srcx, REAL srcy, REAL srcwidth, REAL srcheight, Unit srcUnit);
10
Bitmap类的常用方法
UINT GetWidth(); //获取位图的宽度
UINT GetHeight(); //获取位图的高度
GetPixel(INT x, INT y, Color *color); //获取位图指定位置的颜色 SetPixel(INT X, INT y, const Color &color); //设置位图指定位置的颜色
23
Graphics绘制图片
把图片的指定区域绘制在指定目标区域的方法如下: DrawImage(Image* image, const Rect& destRect, INT srcx, INT srcy, INT srcwidth, INT srcheight, Unit srcUnit); DrawImage(Image* image, const RectF& destRect, REAL srcx, REAL srcy, REAL srcwidth, REAL srcheight, Unit srcUnit); destRect为指定目标区域。可为Rect类型(内部成员为INT类型),也可以RectF类型 (内部成员为REAL类型)。 srcx,srcy为图片指定区域的左上角的坐标,可为INT类型,也可为REAL类型。
相关主题