文档章节

GdiPlus[34]: IGPGraphicsPath (一)

涂孟超
 涂孟超
发布于 2014/09/26 15:38
字数 421
阅读 5
收藏 0
点赞 0
评论 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;

 
 
 
 
 

 

 

  

© 著作权归作者所有

共有 人打赏支持
涂孟超
粉丝 12
博文 2004
码字总数 14107
作品 0
深圳
程序员
mif2png(QQGame 专用 mif 格式转 png 格式)

2011-11-26 00:27 发布于 http://hi.baidu.com/umu618/item/207ca93ae23d34c7392ffa0e,属于开源代码,转到此处。   大学时代的作品《UMU 游戏之争上游》的副产品,mif2bmp 改进版,用 Gd...

UMU ⋅ 2012/10/19 ⋅ 4

GDI+里面的问题。。。。。。。。。。

error C2248: “Gdiplus::Bitmap::Bitmap”: 无法访问 private 成员(在“Gdiplus::Bitmap”类中声明) 1> c:program filesmicrosoft sdkswindowsv7.0aincludegdiplusheaders.h(630) : 参见“G......

xxdd ⋅ 2013/10/24 ⋅ 0

vs 2005 添加GDI配置

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

种地瓜 ⋅ 2015/12/08 ⋅ 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 ⋅ 0

VS2008中使用GDI+

include <objbase.h> #include <gdiplus.h> #pragma comment(lib, "gdiplus.lib") using namespace Gdiplus; 定义全局 无符号长整形指针 ULONGPTR 如 ULONGPTR gdiplusupToken; 在构造函数里......

ryany ⋅ 2011/03/20 ⋅ 0

MFC用GDI+动感歌词的制作

源代码:http://download.csdn.net/detail/nuptboyzhb/4219669 源代码: 1. 插入一个对话框的资源,删除默认控件,并为对话框创建一个类,命名为ClyricDlg; 2. 在对话框的头文件中添加GDI+相...

长平狐 ⋅ 2012/10/08 ⋅ 0

在DLL中调用createwindows,报错1407

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

哈大哈傻瓜 ⋅ 2016/03/27 ⋅ 0

VC中使用GDI+实现为按钮加载Png图片

VC中使用GDI+实现为按钮加载Png图片 作者:flyfish 2010-3-15 一、在stdafx.h文件中添加头文件,命名空间,库的引用, #include usingnamespaceGdiplus; #pragmacomment( lib, "gdiplus.lib"...

冯京宝 ⋅ 2010/10/31 ⋅ 0

模仿酷狗7(Kugou7)音乐魔方界面源码

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

邓学彬 ⋅ 2012/12/09 ⋅ 0

VC 6.0 配置和使用gdi+

GDI+ GDI+是Windows XP中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过C++类实现的应用程序编程接口。顾名思义,GDI+是以前版本GDI的继承者,出于兼容性考虑,W...

junwong ⋅ 2012/03/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

Spring 依赖注入(DI)

1、Setter方法注入: 通过设置方法注入依赖。这种方法既简单又常用。 类中定义set()方法: public class HelloWorldOutput{ HelloWorld helloWorld; public void setHelloWorld...

霍淇滨 ⋅ 昨天 ⋅ 0

马氏距离与欧氏距离

马氏距离 马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ的随机变量之间的差异程度。 如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧氏距离,如果协方差矩阵为对角阵,则其也...

漫步当下 ⋅ 昨天 ⋅ 0

聊聊spring cloud的RequestRateLimiterGatewayFilter

序 本文主要研究一下spring cloud的RequestRateLimiterGatewayFilter GatewayAutoConfiguration @Configuration@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMi......

go4it ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部