博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
再学 GDI+[77]: 区域(6) - GetRegionScans - 获取区域中的所有矩形
阅读量:7089 次
发布时间:2019-06-28

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

  hot3.png

本例效果图:
26153638_LFLC.gif

代码文件:

unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls;type  TForm1 = class(TForm)    procedure FormPaint(Sender: TObject);    procedure FormClick(Sender: TObject);  end;var  Form1: TForm1;implementation{$R *.dfm}uses GDIPOBJ, GDIPAPI;procedure TForm1.FormPaint(Sender: TObject);var  g: TGPGraphics;  b: TGPSolidBrush;  path: TGPGraphicsPath;  rgn: TGPRegion;  Matrix: TGPMatrix;  RectCount: Integer;  rts: array of TGPRect;  i: Integer;begin  g := TGPGraphics.Create(Canvas.Handle);  b := TGPSolidBrush.Create(MakeColor(50, 0, 0, 255));  path := TGPGraphicsPath.Create;  path.AddEllipse(MakeRect(20, 10, ClientWidth-40, ClientHeight-20));  rgn := TGPRegion.Create(path);  Matrix := TGPMatrix.Create; {它在本例中只是个摆设, 因为参选需要}  RectCount := rgn.GetRegionScansCount(Matrix);  SetLength(rts, RectCount);  rgn.GetRegionScans(Matrix, PGPRect(rts), RectCount);  Randomize;  for i := 0 to RectCount - 1 do  begin    b.SetColor(ColorRefToARGB(Random($FFFFFF)));    g.FillRectangle(b, rts[i]);  end;  Matrix.Free;  rgn.Free;  path.Free;  b.Free;  g.Free;end;procedure TForm1.FormClick(Sender: TObject);begin  Repaint;end;end.
窗体文件:

object Form1: TForm1  Left = 0  Top = 0  Caption = 'Form1'  ClientHeight = 217  ClientWidth = 219  Color = clBtnFace  Font.Charset = DEFAULT_CHARSET  Font.Color = clWindowText  Font.Height = -11  Font.Name = 'Tahoma'  Font.Style = []  OldCreateOrder = False  Position = poDesktopCenter  OnClick = FormClick  OnPaint = FormPaint  PixelsPerInch = 96  TextHeight = 13end

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

你可能感兴趣的文章
java创建二叉树并递归遍历二叉树
查看>>
JSON必知必会
查看>>
安全站点导航
查看>>
Oracle Job
查看>>
收集一些有意思的ASCII程序注释(持续收集中,希望大家踊跃贡献)
查看>>
做网站的各种推荐网
查看>>
CS文件密码加密类
查看>>
leetcode 10. 正则表达式匹配
查看>>
JM8.6中帧内帧间模式的选择
查看>>
测试覆盖率工具:EclEmma
查看>>
《CLR via C#》读书笔记 之 基元类型、引用类型和值类型
查看>>
BOS常用代码说明
查看>>
第111天:Ajax之jQuery实现方法
查看>>
/etc/rc.d/init.d/iptables: No such file or directory 错误原因
查看>>
背包问题
查看>>
模拟地与数字地(转)
查看>>
一本审视自己和充满为人处世哲学的书--<<人性的弱点>>
查看>>
c#加载XML文档
查看>>
COGS 2259 异化多肽——生成函数+多项式求逆
查看>>
3Sum Closest leetcode
查看>>