文档章节

再学 GDI+[55]: 路径 - Flatten

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 290
阅读 2
收藏 0
通过路径的 Flatten 方法可以把路径中的曲线拉直, 拉直到什么程度是由它的第二个参数(默认0.25)决定的; 它的第一个参数又是一个矩阵变换, 也就是说 Flatten 可以同时进行矩阵变换, 本例没有测试它, 其详情参见:
http://www.cnblogs.com/del/archive/2008/06/20/1226293.html

本例效果图:



代码文件:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls;

type
  TForm1 = class(TForm)
    TrackBar1: TTrackBar;
    procedure FormPaint(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses GDIPOBJ, GDIPAPI;

procedure TForm1.FormCreate(Sender: TObject);
begin
  TrackBar1.Height := 23;
  TrackBar1.ShowSelRange := False;
  TrackBar1.Min := -5000;
  TrackBar1.Max := 5000;
  TrackBar1.Position := 25;
  TrackBar1.PageSize := 5;
end;

procedure TForm1.FormPaint(Sender: TObject);
var
  g: TGPGraphics;
  p: TGPPen;
  path: TGPGraphicsPath;
  f: Single;
begin
  g := TGPGraphics.Create(Canvas.Handle);
  p := TGPPen.Create(aclBlue, 2);
  path := TGPGraphicsPath.Create;
  path.AddEllipse(20, 20, ClientWidth-40, ClientHeight- 80);

  f := TrackBar1.Position / 100;
  path.Flatten(nil, f);
  Text := Format('%f', [f]);

  g.DrawPath(p, path);

  path.Free;
  p.Free;
  g.Free;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  Repaint;
end;

end.

 
 
 
 
 

 

 

  
窗体文件:
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 200
  ClientWidth = 264
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  Position = poDesktopCenter
  OnCreate = FormCreate
  OnPaint = FormPaint
  PixelsPerInch = 96
  TextHeight = 13
  object TrackBar1: TTrackBar
    Left = 0
    Top = 176
    Width = 265
    Height = 45
    TabOrder = 0
    OnChange = TrackBar1Change
  end
end

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/06/20/1226399.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
jenkins插件之Publish Over SSH

说明 这个插件可以通过ssh连接其他服务器。 公共配置 Passphrase:密码 Path to key:key文件(私钥)的路径 Key:将私钥复制到这个框中 Disable exec:禁止运行命令 私有配置 SSH Server N...

日久不生情
2017/11/16
0
0
[译]JavaScript 让 Monad 更简单(软件编写)(第十一部分)

原文地址:JavaScript Monads Made Simple 原文作者: Eric Elliott 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:yoyoyohamapi 校对者:IridescentMia WJoan Jav...

吴晓军
2017/10/17
0
0
Wine 1.9.15 发布,Windows 应用兼容层

Wine 是一个伟大的项目,Wine 是一款让你在 Linux、MAC 上运行 Windows 程序的软件,从 Wine 1.7.55 发布之后,稳定版本以 wine 1.8.x 发布,而 1.9.X 开始作为开发版本发布。 最新开发版本 ...

oschina
2016/07/25
2.1K
10
实战开发:新手小白如何用C++制作经典网游DNF

十年前,那时候的网吧还不叫网咖,那时候没有王者荣耀也没有英雄联盟,那时候梦幻西游刚推出珍宝阁系统,那时候巫妖王的灵魂还封闭在冰封王座。 寻仙、穿越火线、征途、天龙八部……同时在线...

stone15165
05/05
0
0
jenkins插件之Publish Over FTP

说明 这个插件可以将文件发布到FTP上去。 系统设置 FTP Server Name:名称 Hostname:主机IP或者域名 Username:ftp登陆用户名 Password:ftp密码 Remote Directory:远程根目录(建议设置为...

日久不生情
2017/11/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何通过 J2Cache 实现分布式 session 存储

做 Java Web 开发的人多数都会需要使用到 session (会话),我们使用 session 来保存一些需要在两个不同的请求之间共享数据。一般 Java 的 Web 容器像 Tomcat、Resin、Jetty 等等,它们会在...

红薯
今天
1
0
C++ std::thread

C++11提供了std::thread类来表示一个多线程对象。 1,首先介绍一下std::this_thread命名空间: (1)std::this_thread::get_id():返回当前线程id (2)std::this_thread::yield():用户接口...

yepanl
今天
2
0
Nignx缓存文件与动态文件自动均衡的配置

下面这段nginx的配置脚本的作用是,自动判断是否存在缓存文件,如果有优先输出缓存文件,不经过php,如果没有,则回到php去处理,同时生成缓存文件。 PHP框架是ThinkPHP,最后一个rewrite有关...

swingcoder
今天
1
0
20180920 usermod命令与用户密码管理

命令 usermod usermod 命令的选项和 useradd 差不多。 一个用户可以属于多个组,但是gid只有一个;除了gid,其他的组(groups)叫做扩展组。 usermod -u 1010 username # 更改用户idusermod ...

野雪球
今天
1
0
Java网络编程基础

1. 简单了解网络通信协议TCP/IP网络模型相关名词 应用层(HTTP,FTP,DNS等) 传输层(TCP,UDP) 网络层(IP,ICMP等) 链路层(驱动程序,接口等) 链路层:用于定义物理传输通道,通常是对...

江左煤郎
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部