矩阵变换(Matrix)功能很强大, 这里只是旋转了一下.



本例效果图:



代码文件:


unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ComCtrls;typeTForm1 = class(TForm)TrackBar1: TTrackBar;procedure FormPaint(Sender: TObject);procedure FormCreate(Sender: TObject);procedure TrackBar1Change(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}uses GDIPOBJ, GDIPAPI;procedure TForm1.FormCreate(Sender: TObject);
beginTrackBar1.Min := -45;TrackBar1.Max := 45;DoubleBuffered := True;
end;procedure TForm1.FormPaint(Sender: TObject);
varg: TGPGraphics;b: TGPBrush;rgn: TGPRegion;Matrix: TGPMatrix;
beging := TGPGraphics.Create(Canvas.Handle);b := TGPHatchBrush.Create(HatchStyleMin, aclSilver, aclChocolate);rgn := TGPRegion.Create(MakeRect(40, 40, ClientWidth-80, ClientHeight-100));Matrix := TGPMatrix.Create;Matrix.Rotate(TrackBar1.Position);rgn.Transform(Matrix);g.FillRegion(b, rgn);Matrix.Free;rgn.Free;b.Free;g.Free;
end;procedure TForm1.TrackBar1Change(Sender: TObject);
beginRepaint;
end;end.

窗体文件:


object Form1: TForm1Left = 0Top = 0Caption = 'Form1'ClientHeight = 174ClientWidth = 197Color = clBtnFaceFont.Charset = DEFAULT_CHARSETFont.Color = clWindowTextFont.Height = -11Font.Name = 'Tahoma'Font.Style = []OldCreateOrder = FalsePosition = poDesktopCenterOnCreate = FormCreateOnPaint = FormPaintPixelsPerInch = 96TextHeight = 13object TrackBar1: TTrackBarLeft = 0Top = 151Width = 193Height = 23ShowSelRange = FalseTabOrder = 0OnChange = TrackBar1Changeend
end

转载于:https://www.cnblogs.com/del/archive/2008/06/30/1232732.html

再学 GDI+[79]: 区域(8) - Transform - 区域的 Matrix 变换相关推荐

  1. 再学 GDI+[77]: 区域(6) - GetRegionScans - 获取区域中的所有矩形

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

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

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

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

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

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

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

  5. 再学 GDI+[11]: DrawCurve - 绘制曲线

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

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

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

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

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

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

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

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

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

最新文章

  1. PL-VINS:实时基于点线的单目惯导SLAM系统
  2. 企业传播可以考虑放弃公众号了
  3. 网页中嵌入Excel控件
  4. Java学习之模拟纸牌游戏,List的ArrayList,Map的HashMap,重写Collections类的sort方法对指定类进行通过特定属性排序,输入异常处理等的学习...
  5. 爬虫模拟登陆手机验证码_Python+scrapy爬虫之模拟登陆
  6. JVM实用参数(一)JVM类型以及编译器模式
  7. pymysql.err.OperationalError: (1203, “User root already has more than ‘max_user_connections‘ active
  8. AS 3.0 socket 通信,比较基础比较全【转载】
  9. Nokia于MWC再出手机9 PureView 6颗镜头受到瞩目
  10. 第三十三章 SQL命令 DROP INDEX
  11. 一名“老”引擎程序员的昨天、今天和明天
  12. 获取指定年月的月初跟月末的时间戳
  13. 用SAPI做一个聊天模拟器
  14. 【CS231n】斯坦福大学李飞飞视觉识别课程笔记(五):图像分类笔记(下)
  15. 生成了一个严重警告并将其发送到远程终结点。这会导致连接终止。TLS 协议所定义的严重错误代码是...
  16. AD账号被频繁锁定的解决方案
  17. 可扩展标记语言XML
  18. win10移动桌面到D盘
  19. 【文献阅读】VQA能干啥?VQA相关现实应用和未来挑战(Silvio Barraa等人,ArXiv,2021)
  20. python中time模块中的倒计时_python中的计时器timeit的使用方法

热门文章

  1. Go: 字符串比较的三种方法
  2. IO:select、poll、epoll
  3. 怎么打公式_迫真公式部~注入之里技
  4. linux串口上网的简单实现,Linux串口上网的简单实现(3)
  5. java多图片上传json_SpringMVC框架五:图片上传与JSON交互
  6. 网络工程师技能图谱,这些你都会吗?
  7. 蓄电池充放电试验培训课件
  8. node.js require 自动执行脚本 并生成html,利用node.js实现自动生成前端项目组件的方法详解...
  9. php 登陆 才能查看,WordPress登录后才能查看网站内容,未登录跳转登录页面教程...
  10. 成功解决TypeError: ‘str‘ object is not callable