程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi的繪圖功能[11] - TPen類(上)

Delphi的繪圖功能[11] - TPen類(上)

編輯:Delphi

//TPen 的主要屬性有四:

Color、Width、Style、Mode

{Color: 顏色}{Width: 寬度; 默認是 1; 如果 賦予 <= 0 的值, 會使用默認值}
{Style: 樣式; Delphi 定義了筆樣式枚舉 TPenStyle, 包含以下樣式:}
psSolid    = 0; {實線}
psDash    = 1; {段線; 要求筆寬<=1}
psDot     = 2; {點線; 要求筆寬<=1}
psDashDot   = 3; {線、點; 要求筆寬<=1}
psDashDotDot = 4; {線、點、點; 要求筆寬<=1}
psClear    = 5; {不可見}
psInsideFrame = 6; {實線; 但筆寬是向裡擴展}
psUserStyle  = 7; {自定義, Delphi.Net 支持}
psAlternate  = 8; {交替, Delphi.Net 支持}

//下面的例子依次展示了各種樣 式:var
 i,x,y,n: Integer;
begin
 x := 10;
 y := 15;
 n := ClientWidth - 2*x;
 Canvas.Pen.Color := clRed;
 for i := 0 to 8 do
 begin
  Canvas.Pen.Style := TPenStyle(i);
  Canvas.MoveTo(x, y);
  Canvas.LineTo(x + n, y);
  y := y + 15;
 end;
end;

//效果圖:

{Mode: 畫筆與背景的顏色混合模式; Delphi 定義了模式枚舉 TPenMode, 包含以下模式:} pmBlack    {總是黑色}
pmWhite    {總是白色}
pmNop     {畫筆無效}
pmNot     {背景色取反}
pmCopy    {畫筆設置的顏色}
pmNotCopy   {畫筆顏色取反}
pmMergePenNot {畫筆顏色與背景顏色的反色的組合}
pmMaskPenNot {畫筆顏色與背景公共色的反色的組合}
pmMergeNotPen {畫筆顏色取反後與背景顏色的組合}
pmMaskNotPen {畫筆的反色與背景的公共色的組合}
pmMerge    {畫筆顏色與背景顏色的組合}
pmNotMerge  {pmMerge 的反色}
pmMask    {畫筆與背景公共顏色的組合}
pmNotMask   {pmMask 的反色}
pmXor     {畫筆顏色與背景顏色的 Xor 組合}
pmNotXor   {pmXor 的反色}

//顏色模式測試程序:var
 i,x,y,w,n: Integer;
begin

{先畫豎的顏色背景} x := 0;
 y := 0;
 w := ClientWidth div 18;
 for i := 0 to 18 do
 begin
  Canvas.Brush.Color := PaletteIndex(i);
  Canvas.FillRect(Rect(x, y, x+w, ClientHeight));
  x := x + w;
 end;

{再按不同模式依次畫 16 條紅色的橫線} x := 0;
 y := 20;
 n := ClientWidth;
 Canvas.Pen.Width := 4;
 Canvas.Pen.Color := clRed;
 for i := 0 to 15 do
 begin
  Canvas.Pen.Mode := TPenMode(i);
  Canvas.MoveTo(x, y);
  Canvas.LineTo(x + n, y);
  y := y + 20;
 end;
end;

//效果圖:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved