再學 GDI+[69]: 路徑畫刷(9) – SetInterpolationColors 與 SetSurroundColors 的區別

來源:互聯網
上載者:User
本例:


代碼檔案:
unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, ComCtrls, StdCtrls, ExtCtrls;type  TForm1 = class(TForm)    procedure FormPaint(Sender: TObject);  end;var  Form1: TForm1;implementation{$R *.dfm}uses GDIPOBJ, GDIPAPI;procedure TForm1.FormPaint(Sender: TObject);const  colors: array[0..3] of TGPColor = (aclRed, aclYellow, aclGreen, aclBlue);  pos: array[0..3] of Single = (0.0, 0.2, 0.6, 1.0); {好像兩端資料必須要是 0 和 1}var  g: TGPGraphics;  path: TGPGraphicsPath;  pb: TGPPathGradientBrush;  num: Integer;  pts: array of TGPPoint;begin  g := TGPGraphics.Create(Canvas.Handle);  path := TGPGraphicsPath.Create;  {建立橢圓路徑, 並根據路徑建立路徑畫刷, 再用 SetInterpolationColors 設定顏色}  path.AddEllipse(MakeRect(10,10,150,150));  pb := TGPPathGradientBrush.Create(path);  pb.SetInterpolationColors(@colors, @pos, Length(pos));  g.FillPath(pb, path);  {根據橢圓路徑建立路徑畫刷, 再用 SetSurroundColors 設定顏色}  pb.Free;  pb := TGPPathGradientBrush.Create(path);  num := Length(pos);  pb.SetSurroundColors(@colors, num);  g.TranslateTransform(160, 0);  g.FillPath(pb, path);  {根據從橢圓路徑中提取出的點數組建立路徑畫刷, 再用 SetSurroundColors 設定顏色}  SetLength(pts, path.GetPointCount);  path.GetPathPoints(PGPPoint(pts), Length(pts));  pb.Free;  pb := TGPPathGradientBrush.Create(PGPPoint(pts), Length(pts));  pb.SetCenterColor(aclWhite); {此時中心會預設黑色, 我想要白色的}  num := Length(colors);  pb.SetSurroundColors(@colors, num);  g.TranslateTransform(160, 0);  g.FillPath(pb, path);  {根據從橢圓路徑中提取出的點數組建立路徑畫刷, 再用 SetInterpolationColors 設定顏色}//  SetLength(pts, path.GetPointCount);//  path.GetPathPoints(PGPPoint(pts), Length(pts));  pb.Free;  pb := TGPPathGradientBrush.Create(PGPPoint(pts), Length(pts));//  pb.SetCenterColor(aclWhite); {這裡不需要中心色}  num := Length(colors);  pb.SetInterpolationColors(@colors, @pos, Length(pos));  g.TranslateTransform(160, 0);  g.FillPath(pb, path);  pb.Free;  path.Free;  g.Free;end;end.

表單檔案:

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.