TPen的7种Style和16种Mode

[delphi] view plain copy
 
 print?
  1. //TPen 的主要属性有四: Color、Width、Style、Mode  
  2.   
  3. {Color: 颜色}  
  4.   
  5. {Width: 宽度; 默认是 1; 如果赋予 <= 0 的值, 会使用默认值}  
  6.   
  7. {Style: 样式; Delphi 定义了笔样式枚举 TPenStyle, 包含以下样式:}  
  8. psSolid       = 0; {实线}  
  9. psDash        = 1; {段线; 要求笔宽<=1}  
  10. psDot         = 2; {点线; 要求笔宽<=1}  
  11. psDashDot     = 3; {线、点; 要求笔宽<=1}  
  12. psDashDotDot  = 4; {线、点、点; 要求笔宽<=1}  
  13. psClear       = 5; {不可见}  
  14. psInsideFrame = 6; {实线; 但笔宽是向里扩展}  
  15. psUserStyle   = 7; {自定义, Delphi.Net 支持}  
  16. psAlternate   = 8; {交替, Delphi.Net 支持}  


 

[delphi] view plain copy
 
 print?
  1. //下面的例子依次展示了各种样式:  
  2. var  
  3.   i,x,y,n: Integer;  
  4. begin  
  5.   x := 10;  
  6.   y := 15;  
  7.   n := ClientWidth - 2*x;  
  8.   Canvas.Pen.Color := clRed;  
  9.   for i := to do  
  10.   begin  
  11.     Canvas.Pen.Style := TPenStyle(i);  
  12.     Canvas.MoveTo(x, y);  
  13.     Canvas.LineTo(x + n, y);  
  14.     y := y + 15;  
  15.   end;  
  16. end;  


//效果图:

[delphi] view plain copy
 
 print?
  1. {Mode: 画笔与背景的颜色混合模式; Delphi 定义了模式枚举 TPenMode, 包含以下模式:}  
  2. pmBlack       {总是黑色}  
  3. pmWhite       {总是白色}  
  4. pmNop         {画笔无效}  
  5. pmNot         {背景色取反}  
  6. pmCopy        {画笔设置的颜色}  
  7. pmNotCopy     {画笔颜色取反}  
  8. pmMergePenNot {画笔颜色与背景颜色的反色的组合}  
  9. pmMaskPenNot  {画笔颜色与背景公共色的反色的组合}  
  10. pmMergeNotPen {画笔颜色取反后与背景颜色的组合}  
  11. pmMaskNotPen  {画笔的反色与背景的公共色的组合}  
  12. pmMerge       {画笔颜色与背景颜色的组合}  
  13. pmNotMerge    {pmMerge 的反色}  
  14. pmMask        {画笔与背景公共颜色的组合}  
  15. pmNotMask     {pmMask 的反色}  
  16. pmXor         {画笔颜色与背景颜色的 Xor 组合}  
  17. pmNotXor      {pmXor 的反色}  


 

[delphi] view plain copy
 
 print?
  1. //颜色模式测试程序:  
  2. var  
  3.   i,x,y,w,n: Integer;  
  4. begin  
  5.   {先画竖的颜色背景}  
  6.   x := 0;  
  7.   y := 0;  
  8.   w := ClientWidth div 18;  
  9.   for i := to 18 do  
  10.   begin  
  11.     Canvas.Brush.Color := PaletteIndex(i);  
  12.     Canvas.FillRect(Rect(x, y, x+w, ClientHeight));  
  13.     x := x + w;  
  14.   end;  
  15.   
  16.   {再按不同模式依次画 16 条红色的横线}  
  17.   x := 0;  
  18.   y := 20;  
  19.   n := ClientWidth;  
  20.   Canvas.Pen.Width := 4;  
  21.   Canvas.Pen.Color := clRed;  
  22.   for i := to 15 do  
  23.   begin  
  24.     Canvas.Pen.Mode := TPenMode(i);  
  25.     Canvas.MoveTo(x, y);  
  26.     Canvas.LineTo(x + n, y);  
  27.     y := y + 20;  
  28.   end;  
  29. end;  


//效果图:

:

 
 http://blog.csdn.net/yanjiaye520/article/details/8315197
原文地址:https://www.cnblogs.com/findumars/p/5003991.html