双击代码全选
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的更多相关文章

  1. Delphi 的绘图功能[10] - TFONT 类

    Delphi 的绘图功能[10] - TFONT 类 ;DEFAULT_CHARSET     = ;SYMBOL_CHARSET      = ;SHIFTJIS_CHARSET    = ;HAN ...

  2. Delphi 的绘图功能(29篇博客)

    http://www.cnblogs.com/del/category/123038.html

  3. Delphi 的绘图功能[8] - TextOut、TextWidth、TextHeight

    unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...

  4. ABAP绘图功能模块概观(转)

    ABAP Graphics FM OverviewABAP绘图功能模块概观 此处仅将功能模块及范例程序列出(若要列出详细参数篇幅过大) 2 Main Graphics Demo Program: GR ...

  5. Kivy 中文教程 实例入门 简易画板 (Simple Paint App):2. 实现绘图功能

    1. 理解 kivy 坐标系统 上一节中,咪博士带大家实现了画板程序的基础框架,以及一个基本的自定义窗口部件(widget).在上一节的末尾,咪博士留了一道关于 kivy 坐标系统的思考题给大家.通过 ...

  6. scikit-learn:matplotlib.pyplot经常使用绘图功能总结(1)

    參考:http://matplotlib.org/api/pyplot_api.html 绘图功能总结(2):http://blog.csdn.net/mmc2015/article/details/ ...

  7. OpenCV-Python 绘图功能 | 七

    目标 学习使用OpenCV绘制不同的几何形状 您将学习以下功能:cv.line(),cv.circle(),cv.rectangle(),cv.ellipse(),cv.putText()等. 代码 ...

  8. Python OpenCV的绘图功能简介

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:大Z 在图像中我们经常需要用到将某个局部特征画出来,比如物体检测,物 ...

  9. pandas.DataFarme内置的绘图功能参数说明

    可视化是数据探索性分析及结果表达的一种非常重要的形式,因此打算写一个python绘图系列,本文是第一篇,先说一下pandas.DataFrame.plot()绘图功能. pandas.DataFram ...

随机推荐

  1. To be transfered

    bomb: file format elf64-x86-64 Disassembly of section .init: 0000000000400b38 <_init>: 400b38: ...

  2. cocos2dx游戏开发——微信打飞机学习笔记(七)——Enemy的搭建

    一.文件创建~ Enemy.h Enemy.cpp 二.How to do? 由于我是已经完成成个游戏的功能,所以我会将游戏中enemy所需要的很多功能基本上都先考虑到了,如果大家自己在做的时候也许没 ...

  3. 源码安装Memcached服务器及其2种PHP客户端

    本文所用源码包皆为当时最新stable稳定版. 安装memcached服务器 先安装libevent, 最新版为2.0.21 tar -zxvf libevent-2.0.21-stable.tar. ...

  4. SU Demos-03T-F Analysis-01Sugabor

    先看readme, 运行结果,

  5. ARP缓存表的构成ARP协议全面实战协议详解、攻击与防御

    ARP缓存表的构成ARP协议全面实战协议详解.攻击与防御 1.4.3  ARP缓存表的构成 在局域网的任何一台主机中,都有一个ARP缓存表.该缓存表中保存中多个ARP条目.每个ARP条目都是由一个IP ...

  6. DataTable转换成List<T>

    很多时候需要将DataTable转换成一组model,直接对model执行操作会更加方便直观. 代码如下: public static class DataTableToModel { public ...

  7. AMPPZ2014

    [AMPPZ2014]The Lawyer 记录每天结束的最早的会议以及开始的最晚的会议即可. #include<cstdio> #define N 500010 int n,m,i,d, ...

  8. BZOJ3251 : 树上三角形

    BZOJ AC1000题纪念~~~ 将x到y路径上的点权从小到大排序 如果不存在b[i]使得b[i]+b[i+1]>b[i+2]则无解 此时b数列增长速度快于斐波那契数列,当达到50项时就会超过 ...

  9. java Android SDK安装与环境变量配置以及开发第一个Android程序

    JAVA的安装与环境变量的配置 1.先下载JAVA,并且安装. 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u3 ...

  10. 【BZOJ】2875: [Noi2012]随机数生成器(矩阵乘法+快速乘)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2875 矩阵的话很容易看出来.....我就不写了.太水了. 然后乘法longlong会溢出...那么我 ...