博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Delphi 的绘图功能[7] - PolyBezier、PolyBezierTo
阅读量:7237 次
发布时间:2019-06-29

本文共 2696 字,大约阅读时间需要 8 分钟。

  hot3.png

unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls;type  TForm1 = class(TForm)    Button1: TButton;    Button2: TButton;    procedure Button1Click(Sender: TObject);    procedure Button2Click(Sender: TObject);  end;var  Form1: TForm1;implementation{$R *.dfm}{PolyBezier 至少需要四个点做参数; 不改变画笔的当前位置}procedure TForm1.Button1Click(Sender: TObject);var  pts: array[0..3] of TPoint;begin  Canvas.Pen.Width := 2;  Canvas.Pen.Color := clRed;  pts[0].X := 10; pts[0].Y := 10;  {起点}  pts[1].X := 60; pts[1].Y := 10;  {控制点1}  pts[2].X := 10; pts[2].Y := 100; {控制点2}  pts[3].X := 60; pts[3].Y := 100; {终点}  Canvas.PolyBezier(pts);  Canvas.Pen.Width := 1;  Canvas.Pen.Color := clWhite;  Canvas.LineTo(ClientWidth, ClientHeight);end;{PolyBezierTo 最少只需要需要三个点, 它把当前位置当作第一点; 会改变画笔的当前位置}procedure TForm1.Button2Click(Sender: TObject);var  pts: array[1..3] of TPoint; {从 1 开始的, 就 3 个元素}begin  Canvas.Pen.Width := 2;  Canvas.Pen.Color := clRed;  Canvas.MoveTo(10 + 82, 10);           {起点}  //pts[0].X := 10; pts[0].Y := 10;  pts[1].X := 60 + 82; pts[1].Y := 10;  {控制点1}  pts[2].X := 10 + 82; pts[2].Y := 100; {控制点2}  pts[3].X := 60 + 82; pts[3].Y := 100; {终点}  Canvas.PolyBezierTo(pts);  Canvas.Pen.Width := 1;  Canvas.Pen.Color := clBlue;  Canvas.LineTo(ClientWidth, ClientHeight);end;end.         //效果图:
26153436_xx3U.png

//绘制多条贝塞尔线时, 每条线的终点也是下条线的起点.unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls;type  TForm1 = class(TForm)    Button1: TButton;    Button2: TButton;    procedure Button1Click(Sender: TObject);    procedure Button2Click(Sender: TObject);  end;var  Form1: TForm1;implementation{$R *.dfm}{PolyBezier 绘制多条线时, 需要 3*x + 1 个点}procedure TForm1.Button1Click(Sender: TObject);var  pts: array[0..6] of TPoint;begin  Canvas.Pen.Width := 2;  Canvas.Pen.Color := clRed;  pts[0].X := 10; pts[0].Y := 10;  pts[1].X := 60; pts[1].Y := 10;  pts[2].X := 10; pts[2].Y := 100;  pts[3].X := 40; pts[3].Y := 100;  pts[4].X := 100; pts[4].Y := 10;  pts[5].X := 55; pts[5].Y := 99;  pts[6].X := 70; pts[6].Y := 10;  Canvas.PolyBezier(pts);end;{PolyBezierTo 绘制多条线时, 需要 3*x 个点}procedure TForm1.Button2Click(Sender: TObject);var  pts: array[1..6] of TPoint;begin  Canvas.Pen.Width := 2;  Canvas.Pen.Color := clRed;  Canvas.MoveTo(10 + 82, 10);  //pts[0].X := 10; pts[0].Y := 10;  pts[1].X := 60 + 82; pts[1].Y := 10;  pts[2].X := 10 + 82; pts[2].Y := 100;  pts[3].X := 40 + 82; pts[3].Y := 100;  pts[4].X := 100 + 82; pts[4].Y := 10;  pts[5].X := 55 + 82; pts[5].Y := 99;  pts[6].X := 70 + 82; pts[6].Y := 10;  Canvas.PolyBezierTo(pts);end;end.         //效果图:
26153436_Ntfx.png

转载于:https://my.oschina.net/hermer/blog/319947

你可能感兴趣的文章
正则表达式的优先级
查看>>
利用mvn进行多环境配置
查看>>
JMS发布/订阅消息传送例子
查看>>
Oracle 基础系列之1.2 oracle的基本使用
查看>>
POJ 1149 PIGS (最大流)
查看>>
fitnesse - 一个简单的例子(slim)
查看>>
小白也能懂的手写体识别
查看>>
vs中批量删除注释
查看>>
《程序出错后,程序员给测试人员的20条高频回复》
查看>>
SQL SERVER-时间戳(timestamp)与时间格式(datetime)互相转换
查看>>
printk 与syslog
查看>>
PHP中把一个文件夹下的一个文件移动到另一个文件夹
查看>>
关于点击空白关闭弹窗的js写法推荐
查看>>
PAT1009
查看>>
根据抓的包用代码模拟登录
查看>>
html中的src与href的区别
查看>>
Base64编码
查看>>
Installing Chocolatey
查看>>
python3+spark2.1+kafka0.8+sparkStreaming
查看>>
jstl自己定义函数的使用
查看>>