博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
再学 GDI+[33]: TGPPen - 画笔的几何变换 - SetTransform
阅读量:5885 次
发布时间:2019-06-19

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

  hot3.png

几何变换也就是 Matrix 变换, 画笔的 Matrix 会忽略 dx、dy 平移参数; 选择 LineCapRound 线帽效果比较好.

本例效果图:
26154048_cbgT.gif

代码文件:

unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, ComCtrls, StdCtrls, ExtCtrls;type  TForm1 = class(TForm)    Panel1: TPanel;    Button1: TButton;    TrackBar1: TTrackBar;    TrackBar2: TTrackBar;    TrackBar3: TTrackBar;    TrackBar4: TTrackBar;    procedure FormCreate(Sender: TObject);    procedure FormPaint(Sender: TObject);    procedure TrackBar1Change(Sender: TObject);    procedure TrackBar2Change(Sender: TObject);    procedure TrackBar3Change(Sender: TObject);    procedure TrackBar4Change(Sender: TObject);  end;var  Form1: TForm1;implementation{$R *.dfm}uses GDIPOBJ, GDIPAPI;procedure TForm1.FormCreate(Sender: TObject);const  n = 40;begin  TrackBar1.Min := -n;  TrackBar1.Max := n;  TrackBar2.Min := -n;  TrackBar2.Max := n;  TrackBar3.Min := -n;  TrackBar3.Max := n;  TrackBar4.Min := -n;  TrackBar4.Max := n;  TrackBar1.Position := 10;  TrackBar2.Position := 0;  TrackBar3.Position := 0;  TrackBar4.Position := 10;  Button1.OnClick := FormCreate;end;procedure TForm1.FormPaint(Sender: TObject);var  g: TGPGraphics;  b: TGPBrush;  p: TGPPen;  matrix: TGPMatrix;  m11, m12, m21, m22: Single;begin  g := TGPGraphics.Create(Canvas.Handle);  b := TGPHatchBrush.Create(HatchStyleLargeGrid, aclForestGreen);  p := TGPPen.Create(b, 16);  m11 := TrackBar1.Position / 10;  m12 := TrackBar2.Position / 10;  m21 := TrackBar3.Position / 10;  m22 := TrackBar4.Position / 10;  matrix := TGPMatrix.Create(m11, m12, m21, m22, 0, 0);  p.SetTransform(matrix);  p.SetStartCap(LineCapRound);  p.SetEndCap(LineCapRound);  g.DrawLine(p, 30, 30, ClientWidth - Panel1.Width - 30, ClientHeight - 30);  matrix.Free;  b.Free;  p.Free;  g.Free;end;procedure TForm1.TrackBar1Change(Sender: TObject);begin  Repaint;end;procedure TForm1.TrackBar2Change(Sender: TObject);begin  Repaint;end;procedure TForm1.TrackBar3Change(Sender: TObject);begin  Repaint;end;procedure TForm1.TrackBar4Change(Sender: TObject);begin  Repaint;end;end.
窗体文件:

object Form1: TForm1  Left = 0  Top = 0  Caption = 'Form1'  ClientHeight = 184  ClientWidth = 327  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 Panel1: TPanel    Left = 228    Top = 0    Width = 99    Height = 184    Align = alRight    TabOrder = 0    ExplicitLeft = 225    ExplicitHeight = 170    object Button1: TButton      Left = 14      Top = 8      Width = 75      Height = 25      Caption = #21021#22987#21270      TabOrder = 0    end    object TrackBar1: TTrackBar      Left = 0      Top = 39      Width = 100      Height = 20      ShowSelRange = False      TabOrder = 1      OnChange = TrackBar1Change    end    object TrackBar2: TTrackBar      Left = 0      Top = 72      Width = 100      Height = 20      ShowSelRange = False      TabOrder = 2      OnChange = TrackBar2Change    end    object TrackBar3: TTrackBar      Left = 0      Top = 106      Width = 100      Height = 20      ShowSelRange = False      TabOrder = 3      OnChange = TrackBar3Change    end    object TrackBar4: TTrackBar      Left = 0      Top = 140      Width = 100      Height = 20      ShowSelRange = False      TabOrder = 4      OnChange = TrackBar4Change    end  endend

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

你可能感兴趣的文章
centos 关于防火墙的命令
查看>>
openstack 源码分析
查看>>
idea 使用maven plugin tomcat 运行正常,无法进入debug模式
查看>>
Classification Truth Table
查看>>
JVM学习:对象的创建和内存分配
查看>>
C++ 静态变量 全局变量 const
查看>>
vs 高级保存选项的设置
查看>>
软件工程敏捷开发04
查看>>
Practise Site Home Sample Page Codes de carte cadeau Amazon | Codes Promo Amazon
查看>>
linux c下输入密码不回显
查看>>
在Linux命令行下发送html格式的邮件
查看>>
说说PHP中foreach引用的一个坑
查看>>
基于express框架的应用程序骨架生成器介绍
查看>>
Spring学习11-Spring使用proxool连接池 管理数据源
查看>>
2016第6周五
查看>>
ASP.NET 免费开源控件
查看>>
面向对象葵花宝典阅读思维导图(二)
查看>>
volatile关键字与线程间通信
查看>>
优秀大数据GitHub项目一览
查看>>
TCP/IP详解学习笔记(8)-DNS域名系统
查看>>