GDI+【类库】 - Graphics

本文介绍了使用GDI+在不同环境下创建图形环境的方法,并详细列举了Graphics类提供的多种绘图及填充方法。

构造函数


GDI+可以通过以下四种方法创建Graphics(图形环境)对象:

1.通过窗体canvas的句柄创建,如:

var
  g:TGPGraphics;
  p:TGPPen;
begin
  g:=TGPGraphics.Create(Canvas.Handle);
  p:=TGPPen.Create(aclRed,2);
  g.DrawLine(p,20,40,150,40);

  p.Free;
  g.Free;
end;

2011012818300025.png

2.通过其它有canvas的VCL画布句柄创建,如:

var
  g:TGPGraphics;
  p:TGPPen;
begin
  g:=TGPGraphics.Create(Image1.Canvas.Handle);
  p:=TGPPen.Create(aclRed,2);
  g.DrawLine(p,20,40,150,40);

  p.Free;
  g.Free;
end;

2011012818360583.png

3.通过位图(TGPBitmap)创建Graphics,如:

 

var
  g1,g2:TGPGraphics;
  bit:TGPBitmap;
  p:TGPPen;
begin
  bit:=TGPBitmap.Create(152,42);   //创建一个宽152,高42的位图对象
  g1:=TGPGraphics.Create(bit);     //通过位图创建Graphics (g1)
  p:=TGPPen.Create(aclRed,2);      //创建画笔对象
  g1.DrawEllipse(p,0,0,150,40);    //在g1上画一个椭圆,此时的g1还在内存中,我们还看不到
  g2:=TGPGraphics.Create(Canvas.Handle); //通过窗体canvas的句柄创建另一个Graphics (g2)


  g2.DrawImage(bit,0,0,150,40);   //把g1当成图片画在g2上

  p.Free;
  bit.Free;
  g1.Free;
  g2.Free;
end;

2011012818583420.png

4.通过位图(TGPBitmap)创建Graphics,如:

var
  g1,g2:TGPGraphics;
  img:TGPImage;
  p:TGPPen;
begin
  img:=TGPImage.Create('d:\mm.jpg');   //从指定文件名创建一个图像对象
  g1:=TGPGraphics.Create(img);     //通过图像对象创建Graphics (g1)
  p:=TGPPen.Create(aclRed,2);      //创建画笔对象
  g1.DrawEllipse(p,0,0,150,40);    //在g1上画一个椭圆,此时的g1还在内存中,我们还看不到
  g2:=TGPGraphics.Create(Canvas.Handle); //通过窗体canvas的句柄创建另一个Graphics (g2)


  g2.DrawImage(img,0,0,img.GetWidth,img.GetHeight);   //把g1(图形环境)当成图片画在g2上

  p.Free;
  img.Free;
  g1.Free;
  g2.Free;
end;

2011012819060173.png


 Graphics类(图形环境)提供了很多方法给我们调用,以下是方法表:


DrawLine                 绘制直线

DrawLines               绘制一组直线

DrawRectangle         绘制矩形

DrawRectangles       绘制一组矩形

DrawEllipse              绘制椭圆

DrawCurve              绘制曲线(基数样条)

DrawClosedCurve     绘制闭合曲线

DrawBezier              绘制贝塞尔曲线

DrawBeziers            绘制一组贝塞尔曲线

DrawArc                 绘制弧线

DrawPie                  绘制扇形(饼形)

DrawPolygon           绘制多边形

DrawString             绘制字符串

DrawIcon                绘制图标

DrawIconUnstretched

DrawImage              绘制图像

DrawImageUnscaled

DrawImageUnscaledAndClipped

DrawPath                 绘制路径

 

FillRectangle             填充矩形

FillRectangles           填充一组矩形

FillEllipse                  填充椭圆

FillClosedCurve         填充闭合曲线

FillPie                       填充扇形

FillPolygon                填充多边形

FillRegion                 填充区域

FillPath                    填充路径

 

Clear                       清空图形环境(画布)

BeginContainer

EndContainer

CreateObjRef

Dispose

CopyFromScreen

Equals

ExcludeClip

Finalize

Flush

FromHdc

FromHdcInternal

FromHwnd

FromHwndInternal

FromImage

GetContextInfo

GetHalftonePalette

GetHashCode

GetHdc

GetLifetimeService

GetNearestColor

GetType

InitializeLifetimeService

IntersectClip

IsVisible

AddMetafileComment

EnumerateMetafile

MeasureCharacterRanges

MeasureString

MemberwiseClone

MultiplyTransform

ReleaseHdc

ReleaseHdcInternal

ResetClip

ResetTransform

Restore

RotateTransform

Save

ScaleTransform

SetClip

ToString

TransformPoints

TranslateClip

TranslateTransform

 

转载于:https://www.cnblogs.com/keyvip/archive/2010/12/31/1922751.html

Visual C++6.0使用GDI+的一般方法 1. 载解压GDI+开发包; 2. 正确设置include & lib 目录; 3. stdafx.h 添加: #ifndef ULONG_PTR #define ULONG_PTR unsigned long* #endif #include 4. 程序中添加GDI+的包含文件gdiplus.h以及附加的类库gdiplus.lib。 通常gdiplus.h包含文件添加在应用程序的stdafx.h文件中,而gdiplus.lib可用两种进行添加: 第一种是直接在stdafx.h文件中添加下列语句: #pragma comment( lib, "gdiplus.lib" ) 另一种方法是: 在VC.net中添加库文件在:项目菜单->属性->链接器->输入 举个例子: (1)在应用程序项目的应用类中,添加一个成员变量,如下列代码: ULONG_PTR m_gdiplusToken; 其中,ULONG_PTR是一个DWORD数据类型,该成员变量用来保存GDI+被初始化后在应用程序中的GDI+标识,以便能在应用程序退出后,引用该标识来调用Gdiplus:: GdiplusShutdown来关闭GDI+。 (2)在应用类中添加ExitInstance的重载,并添加下列代码用来关闭GDI+: int CGDITestApp::ExitInstance() { Gdiplus::GdiplusShutdown(m_gdiplusToken); return CWinApp::ExitInstance(); } (3)在应用类的InitInstance函数中添加GDI+的初始化代码: 注意:下面这些GDI+的初始化代码必须放在m_pMainWnd->UpdateWindow();之前。 CWinApp::InitInstance(); Gdiplus::GdiplusStartupInput gdiplusStartupInput; Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL); (4)在需要绘图的窗口或视图类中添加GDI+的绘制代码。 下面分别就单文档和基于对话框应用程序为例,说明使用GDI+的一般过程和方法。 1. 在单文档应用程序中使用GDI+ 在上面的过程中,我们就是以一个单文档应用程序Ex_GDIPlus作为示例的。下面列出第4步所涉及的代码: void CGDITestView::OnDraw(CDC* pDC) { CGDITestDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here usingnamespace Gdiplus; Graphics graphics(pDC->m_hDC); Pen newPen(Color(255,0,0),3); HatchBrush newBrush(HatchStyleCross,Color(255,0,255,0),Color(255,0,0,255));//创建一个填充画刷,前景色为绿色,背景色为蓝色 graphics.DrawRectangle(&newPen,50,50,100,60);// 在(50,50)处绘制一个长为100,高为60的矩形 graphics.FillRectangle(&newBrush,50,50,100,60); // 在(50,50)处填充一个长为100,高为60的矩形区域 } 编译并运行,结果如图:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值