Delphi 的绘图功能[1] - PolyBezier、PolyBezierTo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
unit Unit1; interface uses 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 至少需要四个点做参数; 不改变画笔的当前位置}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
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 最少只需要需要三个点, 它把当前位置当作第一点; 会改变画笔的当前位置}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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. |
//效果图:
//绘制多条贝塞尔线时, 每条线的终点也是下条线的起点.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
unit Unit1; interface uses 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 个点}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
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 个点}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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. |
//效果图:
Delphi 的绘图功能[1] - PolyBezier、PolyBezierTo的更多相关文章
- Delphi 的绘图功能[10] - TFONT 类
Delphi 的绘图功能[10] - TFONT 类 ;DEFAULT_CHARSET = ;SYMBOL_CHARSET = ;SHIFTJIS_CHARSET = ;HAN ...
- Delphi 的绘图功能(29篇博客)
http://www.cnblogs.com/del/category/123038.html
- Delphi 的绘图功能[8] - TextOut、TextWidth、TextHeight
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...
- ABAP绘图功能模块概观(转)
ABAP Graphics FM OverviewABAP绘图功能模块概观 此处仅将功能模块及范例程序列出(若要列出详细参数篇幅过大) 2 Main Graphics Demo Program: GR ...
- Kivy 中文教程 实例入门 简易画板 (Simple Paint App):2. 实现绘图功能
1. 理解 kivy 坐标系统 上一节中,咪博士带大家实现了画板程序的基础框架,以及一个基本的自定义窗口部件(widget).在上一节的末尾,咪博士留了一道关于 kivy 坐标系统的思考题给大家.通过 ...
- scikit-learn:matplotlib.pyplot经常使用绘图功能总结(1)
參考:http://matplotlib.org/api/pyplot_api.html 绘图功能总结(2):http://blog.csdn.net/mmc2015/article/details/ ...
- OpenCV-Python 绘图功能 | 七
目标 学习使用OpenCV绘制不同的几何形状 您将学习以下功能:cv.line(),cv.circle(),cv.rectangle(),cv.ellipse(),cv.putText()等. 代码 ...
- Python OpenCV的绘图功能简介
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:大Z 在图像中我们经常需要用到将某个局部特征画出来,比如物体检测,物 ...
- pandas.DataFarme内置的绘图功能参数说明
可视化是数据探索性分析及结果表达的一种非常重要的形式,因此打算写一个python绘图系列,本文是第一篇,先说一下pandas.DataFrame.plot()绘图功能. pandas.DataFram ...
随机推荐
- 电赛总结(二)——AD芯片总结之AD7705
1.特性参数 (1)16位无丢失代码性AD转化器 (2)只需要3.3V供电(即只需要单片机即可供电) (3)双通道差分输入 (4)基准电压为2.5V时,在单极性信号下,输入范围是0到2.5V,在双极性 ...
- C++Premer Plus学习(五)——函数探幽
一.内联函数 1.优点: 内联函数就是比较省资源,然后一般就是将简短,使用频率高的函数作为内联函数会比较合适. 2.一个demo #include "stdafx.h" #incl ...
- FPGA学习
(一)Verilog HDL语法 一.模块 1.定义:一个电路模块/一种逻辑功能: 2.命名规则:只能是字母,数字,"$",或者'_',且开头必须是字母或者"_" ...
- transient的理解
用法解释 1)一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问. 2)transient关键字只能修饰变量,而不能修饰方法和类.注意,本地变量是不能被 ...
- js:数据结构笔记4--队列
队列是一种特殊的列表,数据结构为FIFO: 定义: function Queue() { this.dataStore = []; this.enqueue = enqueue; this.deque ...
- ZOJ3362 Beer Problem(最小费用任意流)
题目大概说有n个城市,由m条无向边相连,每条边每天最多运送cap桶酒且其运送一桶的花费是cost.现在从1号城市开始出发运酒,供应到2到n号城市,这些城市的收购单价是price,问最大的盈利是多少. ...
- BZOJ4373 : 算术天才⑨与等差数列
设$pre[i]$表示第$i$个数上一次出现的位置,$d[i]=abs(a[i]-a[i+1])$. 用线段树维护区间内$a$的最小值.最大值,$pre$的最大值以及$d$的$\gcd$. 对于询问$ ...
- BZOJ4158 : [POI2007]Railway
论文题. 随便取个关键点,求出最短路树. 求出所有关键点组成的虚树,将两端都在虚树上的边保留. 对剩下的边求出最小生成树即可得到一组可行解. #include<cstdio> #inclu ...
- POJ 1625 Censored!(大数+DP)
题目链接 这题,真心木啥意思,就是数据里貌似字符有负数,注意gets读入.. #include <iostream> #include <cstring> #include & ...
- pygame系列_原创百度随心听音乐播放器_完整版
程序名:PyMusic 解释:pygame+music 之前发布了自己写的小程序:百度随心听音乐播放器的一些效果图 你可以去到这里再次看看效果: pygame系列_百度随心听_完美的UI设计 这个程序 ...