本例效果图:



代码文件:


unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ComCtrls, ExtCtrls;typeTForm1 = class(TForm)Button1: TButton;TrackBar1: TTrackBar;LabeledEdit1: TLabeledEdit;LabeledEdit2: TLabeledEdit;procedure FormMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);procedure FormPaint(Sender: TObject);procedure FormCreate(Sender: TObject);procedure Button1Click(Sender: TObject);procedure TrackBar1Change(Sender: TObject);procedure LabeledEdit1Change(Sender: TObject);procedure LabeledEdit2Change(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}uses GDIPOBJ, GDIPAPI;varPtArr: array of TGPPoint;i: Integer = 0;tension: Single;procedure TForm1.FormCreate(Sender: TObject);
beginButton1.Caption := '擦除';LabeledEdit1.EditLabel.Caption := '起始点';LabeledEdit2.EditLabel.Caption := '有效点数';LabeledEdit1.Text := '0';LabeledEdit2.Text := '0';TrackBar1.ShowSelRange := False;TrackBar1.Min := -25;TrackBar1.Max := 35;TrackBar1.Position := 5;
end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
beginInc(i);SetLength(PtArr, i);PtArr[i-1].X := X;PtArr[i-1].Y := Y;LabeledEdit2.Text := IntToStr(i-1);Text := IntToStr(i);Repaint;
end;procedure TForm1.FormPaint(Sender: TObject);
varg: TGPGraphics;p: TGPPen;i,n1,n2: Integer;
beging := TGPGraphics.Create(Canvas.Handle);p := TGPPen.Create(aclRed, 2);g.Clear(aclWhite);n1 := StrToIntDef(LabeledEdit1.Text, 0);n2 := StrToIntDef(LabeledEdit2.Text, Length(PtArr)-1);{后面三个参数是可选的, 最后参数的默认值是 0.5, 为 0 时曲线会转为直线段}g.DrawCurve(p, PGPPoint(PtArr), Length(PtArr), n1, n2, tension);p.SetWidth(1);p.SetColor(aclBlack);for i := 0 to Length(PtArr) - 1 dog.DrawEllipse(p, PtArr[i].X-2, PtArr[i].Y-2, 4, 4);g.Free;p.Free;
end;procedure TForm1.LabeledEdit1Change(Sender: TObject);
vara,b: Integer;
begina := StrToIntDef(LabeledEdit1.Text, 0);if (a < 0) or (a > Length(PtArr) - 2) thenLabeledEdit1.Text := IntToStr(0);a := StrToIntDef(LabeledEdit1.Text, 0);b := StrToIntDef(LabeledEdit2.Text, 0);if a+b > Length(PtArr)-1 thenLabeledEdit2.Text := IntToStr(Length(PtArr)-1-a);Repaint;
end;procedure TForm1.LabeledEdit2Change(Sender: TObject);
vara,b: Integer;
begina := StrToIntDef(LabeledEdit1.Text, 0);b := StrToIntDef(LabeledEdit2.Text, 0);if (b < 0) or (b >= Length(PtArr) - a) thenLabeledEdit2.Text := IntToStr(Length(PtArr)-1-a);Repaint;
end;procedure TForm1.TrackBar1Change(Sender: TObject);
begintension := TrackBar1.Position / 10;Repaint;
end;procedure TForm1.Button1Click(Sender: TObject);
begini := 0;SetLength(PtArr, i);Repaint;Text := IntToStr(i);
end;end.

窗体文件:


object Form1: TForm1Left = 0Top = 0Caption = 'Form1'ClientHeight = 187ClientWidth = 264Color = clBtnFaceFont.Charset = DEFAULT_CHARSETFont.Color = clWindowTextFont.Height = -11Font.Name = 'Tahoma'Font.Style = []OldCreateOrder = FalsePosition = poDesktopCenterOnCreate = FormCreateOnMouseUp = FormMouseUpOnPaint = FormPaintPixelsPerInch = 96TextHeight = 13object Button1: TButtonLeft = 181Top = 155Width = 75Height = 25Caption = 'Button1'TabOrder = 0OnClick = Button1Clickendobject TrackBar1: TTrackBarLeft = 8Top = 155Width = 167Height = 25TabOrder = 1OnChange = TrackBar1Changeendobject LabeledEdit1: TLabeledEditLeft = 208Top = 54Width = 48Height = 21EditLabel.Width = 61EditLabel.Height = 13EditLabel.Caption = 'LabeledEdit1'TabOrder = 2OnChange = LabeledEdit1Changeendobject LabeledEdit2: TLabeledEditLeft = 208Top = 102Width = 48Height = 21EditLabel.Width = 61EditLabel.Height = 13EditLabel.Caption = 'LabeledEdit2'TabOrder = 3OnChange = LabeledEdit2Changeend
end

再学 GDI+[11]: DrawCurve - 绘制曲线相关推荐

  1. 再学 GDI+[7]: DrawLines - 绘制一组直线

    本例效果图: 代码文件: unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Contr ...

  2. 再学 GDI+[91]: TGPImage(11) - 转灰度图像

    本例效果图: 代码文件: unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Contr ...

  3. mysql img格式缩放,再学 GDI+[89]: TGPImage(9) - 图像缩放时的质量(算法)

    本例效果图: 代码文件: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Co ...

  4. 再学 GDI+[25]: TGPPen - 宽度、颜色与线帽

    本例效果图: 代码文件: unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Contr ...

  5. 再学 GDI+[81]: TGPImage(1) - 显示图像

    已知 GDI+ 可以支持的图像格式: BMP.JPEG.GIF.TIFF.PNG.ICO.WMF.EMF TGPGraphics.DrawImage 函数有太多重载了, 一起列在这吧: functio ...

  6. 再学 GDI+[94]: TGPImage(14) - 增减图像的红、绿、蓝三色的成分

    为什么80%的码农都做不了架构师?>>>    本例效果图: 代码文件: unit Unit1;interfaceusesWindows, Messages, SysUtils, V ...

  7. 再学 GDI+[57]: 路径 - Widen

    为什么80%的码农都做不了架构师?>>>    路径的 Widen 方法可以把路径中的线, 根据指定画笔的宽度与样式, 转换为一个范围(有点类似区域); 但转换后再描绘路径就只能使用 ...

  8. 再学 GDI+[56]: 路径 - Warp

    为什么80%的码农都做不了架构师?>>>    通过路径的 Warp 方法可以让路径在一个范围内(四个点决定的范围)变换; 第一个参数可以是 3 个点或 4 个点的数组, 如果是 3 ...

  9. 再学 GDI+[33]: TGPPen - 画笔的几何变换 - SetTransform

    几何变换也就是 Matrix 变换, 画笔的 Matrix 会忽略 dx.dy 平移参数; 选择 LineCapRound 线帽效果比较好. 本例效果图: 代码文件: unit Unit1;inter ...

最新文章

  1. python requests 发送 上传 多个文件
  2. C语言经典例18-求累加和
  3. 计算机专业毕业文案,我们毕业啦!|今天,没有文案
  4. 2022-02-25
  5. 【深度学习】翻译:60分钟入门PyTorch(三)——神经网络
  6. html 实现表格控制器,HTML 表格类 - CodeIgniter 2.x 用户手册
  7. mysql去除重复数据 重建表_MySQL 中重建mysql库中的表
  8. android imageview 半透明,如何将半透明视图叠加到ImageView上?
  9. 45个经典蓝屏案例一一破解
  10. 四年背的单词 笔记目录
  11. 电子计算机奏出美妙的交响改为把字句,部编版四年级语文上册(课文内容填空+句子专练含答案).doc...
  12. session钝化活化
  13. 产品如何取得WFA的WiFi认证(二)成为WFA会员
  14. 【CTF基础】有限域椭圆曲线定义与计算方式
  15. 用户画像标签体系及实现方法
  16. 【题解刷题总结】青蛙的约会
  17. 剪辑视频调整视频播放倍速,改变视频时长
  18. c语言:输入长和宽计算长方形周长和宽
  19. R语言图形编辑器GUI开发环境RStudio安装(Windows操作系统下、RStudio开发环境安装)
  20. 基于微信维修报修物业小程序系统设计与实现 开题报告

热门文章

  1. 这些Python常用的工具和学习资源你都知道么?
  2. 简单探讨隐私增强技术的类型和用途
  3. 简单介绍Go语言错误处理异常捕获+异常抛出
  4. Rust 所有权介绍
  5. 想自学stm32不知道怎么买板子?我来告诉你新手该买哪一个!
  6. tensorflow中转置卷积运算例子
  7. Codeforces Round #653 (Div. 3)部分题解
  8. Sigma Function LightOJ - 1336[约数和定理]
  9. python中url是什么_怎么在Python中实现URL的解析
  10. wampserver下安装redis_金山云redis安装与连接