文档章节

GdiPlus[34]: IGPGraphicsPath (一)

涂孟超
 涂孟超
发布于 2014/09/26 15:38
字数 421
阅读 5
收藏 0

路径是一组图形命令, 它能容纳所有基本图形和文本、子路径:

IGPGraphicsPath.AddLine();
IGPGraphicsPath.AddLines();
IGPGraphicsPath.AddArc();
IGPGraphicsPath.AddBezier();
IGPGraphicsPath.AddBeziers();
IGPGraphicsPath.AddCurve();
IGPGraphicsPath.AddClosedCurve();
IGPGraphicsPath.AddRectangle();
IGPGraphicsPath.AddRectangles();
IGPGraphicsPath.AddEllipse();
IGPGraphicsPath.AddPie();
IGPGraphicsPath.AddPolygon();
IGPGraphicsPath.AddPath();
IGPGraphicsPath.AddString();

{ 本页示例相关命令 }
IGPGraphics.DrawPath            // 绘制路径
IGPGraphics.FillPath            // 填充路径
IGPGraphicsPath.FillMode        // 路径填充模式

IGPGraphicsPath.StartFigure     // 开始一个新的图形, 并不关闭之前的图形
IGPGraphicsPath.CloseFigure     // 关闭当前图形, 并开始新图形
IGPGraphicsPath.CloseAllFigures // 关闭之前所有开放图形, 并开始新图形
IGPGraphicsPath.Reset           // 重置路径

 
 
 
 
 

 

 

  

FillPath、DrawPath 测试图:



FillPath、DrawPath 测试代码:

uses GdiPlus;

procedure TForm1.FormPaint(Sender: TObject);
var
  Graphics: IGPGraphics;
  Path: IGPGraphicsPath;
  Pen: IGPPen;
  Brush: IGPBrush;
begin
  Path := TGPGraphicsPath.Create;
  Path.AddRectangle(TGPRect.Create(20, 20, 96, 60));
  Path.AddEllipse(TGPRect.Create(92, 20, 120, 60));

  Graphics := TGPGraphics.Create(Handle);
  Pen := TGPPen.Create($FFFF0000, 2);
  Brush := TGPSolidBrush.Create($FFFFD700);

  Graphics.DrawPath(Pen, Path);
  Graphics.TranslateTransform(0, 80);

  Graphics.FillPath(Brush, Path);
  Graphics.TranslateTransform(0, 80);

  Graphics.FillPath(Brush, Path);
  Graphics.DrawPath(Pen, Path);
  Graphics.TranslateTransform(0, 80);

  //填充模式有两种, 默认的是 FillModeAlternate; 可以在建立路径时指定填充模式
  Path.FillMode := FillModeWinding;
  Graphics.FillPath(Brush, Path);
  Graphics.DrawPath(Pen, Path);
  Graphics.TranslateTransform(0, 80);
end;

 
 
 
 
 

 

 

  

StartFigure、CloseFigure、CloseAllFigures、Reset 测试图:



StartFigure、CloseFigure、CloseAllFigures、Reset 测试代码:

uses GdiPlus;

procedure TForm1.FormPaint(Sender: TObject);
const
  Pts1: array[0..2] of TGPPoint = ((X:0;   Y:30), (X:30;  Y:0), (X:60;  Y:30));
  Pts2: array[0..2] of TGPPoint = ((X:80;  Y:30), (X:110; Y:0), (X:140; Y:30));
  Pts3: array[0..2] of TGPPoint = ((X:160; Y:30), (X:190; Y:0), (X:220; Y:30));
var
  Graphics: IGPGraphics;
  Path: IGPGraphicsPath;
  Pen: IGPPen;
  Brush: IGPBrush;
begin
  Graphics := TGPGraphics.Create(Handle);
  Pen := TGPPen.Create($FFFF0000, 2);
  Brush := TGPSolidBrush.Create($FFD0D0D0);
  Path := TGPGraphicsPath.Create;

  //
  Path.AddLines(Pts1);
  Path.AddLines(Pts2);
  Path.AddLines(Pts3);
  Graphics.FillPath(Brush, Path);
  Graphics.DrawPath(Pen, Path);
  Graphics.TranslateTransform(0, 50);

  //
  Path.Reset;
  Path.StartFigure;
    Path.AddLines(Pts1);
  Path.StartFigure;
    Path.AddLines(Pts2);
  Path.StartFigure;
    Path.AddLines(Pts3);

  Graphics.FillPath(Brush, Path);
  Graphics.DrawPath(Pen, Path);
  Graphics.TranslateTransform(0, 50);

  //
  Path.Reset;
  Path.StartFigure;
    Path.AddLines(Pts1);
  Path.StartFigure;
    Path.AddLines(Pts2);
  Path.StartFigure;
    Path.AddLines(Pts3);
  Path.CloseFigure;
  Graphics.FillPath(Brush, Path);
  Graphics.DrawPath(Pen, Path);
  Graphics.TranslateTransform(0, 50);

  //
  Path.Reset;
  Path.StartFigure;
    Path.AddLines(Pts1);
  Path.StartFigure;
    Path.AddLines(Pts2);
  Path.StartFigure;
    Path.AddLines(Pts3);
  Path.CloseAllFigures;
  Graphics.FillPath(Brush, Path);
  Graphics.DrawPath(Pen, Path);
  Graphics.TranslateTransform(0, 50);

  //
  Path.Reset;
  Path.StartFigure;
    Path.AddLines(Pts1);
    Path.AddLines(Pts2);
    Path.AddLines(Pts3);
  Path.CloseFigure;
  Graphics.FillPath(Brush, Path);
  Graphics.DrawPath(Pen, Path);
end;

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2009/12/17/1626333.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
GDI+里面的问题。。。。。。。。。。

error C2248: “Gdiplus::Bitmap::Bitmap”: 无法访问 private 成员(在“Gdiplus::Bitmap”类中声明) 1> c:\program files\microsoft sdks\windows\v7.0a\include\gdiplusheaders.h(630) : ......

xxdd
2013/10/24
65
0
vs 2005 添加GDI配置

在VS2005当中由于自带了GDI+的开发包,所以不需要在安装GDI开发包,这些头文件的位置由VS中的$(WindowsSdkDir)/include自动包含进来了 下午自己添加了好几次,总是出现有报错,,在 stdafx.h...

种地瓜
2015/12/08
85
0
MFC边框重绘

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 pragma once incl......

江河海流
2016/01/30
509
0
在DLL中调用createwindows,报错1407

//初始化 AtlAxWinInit(); Gdiplus::GdiplusStartupInput gdiplusStartupInput; ULONG_PTR gdiplusToken; Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); //名字和当......

哈大哈傻瓜
2016/03/27
136
0
模仿酷狗7(Kugou7)音乐魔方界面源码

源码名称:模仿酷狗7(Kugou7)界面源码 源码作者:邓学彬(泪闯天涯) 源码说明:内含VC++源码、易语言源码各一份.包含所有图片源码(使用Fireworks编辑) 开发环境:VC版--VS2005、Gdiplus;易语...

邓学彬
2012/12/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 你一口我一口多咬一口是小狗

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文 :分享Roy Orbison的单曲《She's a Mystery to Me》 《She's a Mystery to Me》- Roy Orbison 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
56
4
Spring源码学习笔记-1-Resource

打算补下基础,学习下Spring源码,参考书籍是《Spring源码深度解析》,使用版本是Spring 3.2.x,本来想试图用脑图记录的,发现代码部分不好贴,还是作罢,这里只大略记录下想法,不写太细了 ...

zypy333
今天
12
0
RestClientUtil和ConfigRestClientUtil区别说明

RestClientUtil directly executes the DSL defined in the code. ConfigRestClientUtil gets the DSL defined in the configuration file by the DSL name and executes it. RestClientUtil......

bboss
今天
20
0

中国龙-扬科
昨天
4
0
Linux系统设置全局的默认网络代理

更改全局配置文件/etc/profile all_proxy="all_proxy=socks://rahowviahva.ml:80/"ftp_proxy="ftp_proxy=http://rahowviahva.ml:80/"http_proxy="http_proxy=http://rahowviahva.ml:80/"......

临江仙卜算子
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部