GDI+【类库】 - Pen

本文介绍如何使用TGPPen对象绘制直线和曲线。包括通过不同方式创建TGPPen对象的方法,并详细解释了其属性和方法,如设置颜色、宽度及各种变换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义用于绘制直线和曲线的对象。 无法继承此类。

构造函数

1.通过“画刷”创建Pen(画笔)对象,如下:
var
  g:TGPGraphics;
  brush:TGPBrush;
  p:TGPPen;
begin
  g:=TGPGraphics.Create(Canvas.Handle);  //创建图形环境
  brush:=TGPSolidBrush.Create(aclRed); //TGPBrush需要通过子类创建,这里用实心画刷

  p:=TGPPen.Create(brush);     //通过实心画刷对象创建画笔(还可以用其它画刷创建,如纹理画刷),没指定笔宽情况下笔宽默认为1
  g.DrawEllipse(p,30,30,150,80);  //画一个椭圆

  p.Free;
  brush.Free;
  g.Free;
end;
2011012819393472.png
 
2.通过“画刷”和“笔宽”创建Pen(画笔)对象,如下:
var
  g:TGPGraphics;
  brush:TGPBrush;
  p:TGPPen;
begin
  g:=TGPGraphics.Create(Canvas.Handle);  //创建图形环境
  brush:=TGPSolidBrush.Create(aclRed); //TGPBrush需要通过子类创建,这里用实心画刷

  p:=TGPPen.Create(brush,3);     //用画刷 和 笔宽创建画笔
  g.DrawEllipse(p,30,30,150,80);  //画一个椭圆

  p.Free;
  brush.Free;
  g.Free;
end;
2011012819432484.png
3.通过“颜色”创建Pen(画笔)对象,如下:
var
  g:TGPGraphics;
  p:TGPPen;
begin
  g:=TGPGraphics.Create(Canvas.Handle);  //创建图形环境

  p:=TGPPen.Create(aclAqua);     //通过颜色常量创建画笔(aclAqua代表浅绿),没指定笔宽情况下笔宽默认为1
  g.DrawEllipse(p,30,30,150,80);  //画一个椭圆

  p.Free;
  g.Free;
end;
2011012819521149.png
4.通过“颜色”和“笔宽”创建Pen(画笔)对象,如下:
var
  g:TGPGraphics;
  p:TGPPen;
begin
  g:=TGPGraphics.Create(Canvas.Handle);  //创建图形环境

  p:=TGPPen.Create(aclAqua,3);     //通过颜色常量创建画笔(aclAqua代表浅绿)
  g.DrawEllipse(p,30,30,150,80);  //画一个椭圆

  p.Free;
  g.Free;
end;
 2011012819591835.png

     方法
Clone                                        创建此 Pen 的一个精确副本。  
Dispose                                     释放此 Pen 使用的所有资源。 
Equals(Object)                           确定指定的 Object 是否等于当前的 Object。
GetHashCode                             用作特定类型的哈希函数。
GetType                                    获取当前实例的 Type。
InitializeLifetimeService                获取控制此实例的生存期策略的生存期服务对象。
MemberwiseClone                       创建当前 Object 的浅表副本。 
MemberwiseClone(Boolean)          创建当前 MarshalByRefObject 对象的浅表副本。 
MultiplyTransform(Matrix)            用指定的 Matrix 乘以此 Pen 的变换矩阵。 
MultiplyTransform(Matrix, MatrixOrder)                      按照指定的顺序,用指定的 Matrix 乘以此 Pen 的变换矩阵。 
ResetTransform                                                      将此 Pen 的几何变换矩阵重置为单位矩阵。 
RotateTransform(Single)                                          将局部几何变换旋转指定角度。 此方法将旋转添加到变换前。 
RotateTransform(Single, MatrixOrder)                       以指定顺序将局部几何变换旋转指定角度。 
ScaleTransform(Single, Single)                                 按指定因子缩放局部几何变换。 此方法将缩放矩阵添加到变换前。 
ScaleTransform(Single, Single, MatrixOrder)               将局部几何变换以指定顺序缩放指定因子。 
SetLineCap                                                             设置用于确定线帽样式的值,线帽用于结束通过此 Pen 绘制的直线。 
ToString                                                                 返回表示当前 Object 的 String。 
TranslateTransform(Single, Single)                            将局部几何变换平移指定尺寸。 此方法将平移添加到变换前。 
TranslateTransform(Single, Single, MatrixOrder)         按指定的顺序将局部几何变换平移指定的尺寸。

属性
Alignment                              获取或设置此 Pen 的对齐方式。 
Brush                                    获取或设置 Brush,用于确定此 Pen 的特性。 
Color                                     获取或设置此 Pen 的颜色。 
CompoundArray                     获取或设置用于指定复合钢笔的值数组。 复合钢笔绘制由平行直线和空白区域组成的复合直线。 
CustomEndCap                      获取或设置要在通过此 Pen 绘制的直线终点使用的自定义线帽。 
CustomStartCap                    获取或设置要在通过此 Pen 绘制的直线起点使用的自定义线帽。 
DashCap                               获取或设置用在短划线终点的线帽样式,这些短划线构成通过此 Pen 绘制的虚线。 
DashOffset                            获取或设置直线的起点到短划线图案起始处的距离。 
DashPattern                          获取或设置自定义的短划线和空白区域的数组。 
DashStyle                              获取或设置用于通过此 Pen 绘制的虚线的样式。 
EndCap                                 获取或设置要在通过此 Pen 绘制的直线终点使用的线帽样式。 
LineJoin                                 获取或设置通过此 Pen 绘制的两条连续直线的端点的联接样式。 
MiterLimit                               获取或设置斜接角上联接宽度的限制。 
PenType                                获取用此 Pen 绘制的直线的样式。 
StartCap                                获取或设置在通过此 Pen 绘制的直线起点使用的线帽样式。 
Transform                              获取或设置此 Pen 的几何变换的副本。 
Width                                    获取或设置此 Pen 的宽度,以用于绘图的 Graphics 对象为单位。 

显式接口实现

转载于:https://www.cnblogs.com/keyvip/archive/2010/12/31/1922757.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、付费专栏及课程。

余额充值