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

//效果图:

  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 的反色}
  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 := 0 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. x := 0;
  17. y := 20;
  18. n := ClientWidth;
  19. Canvas.Pen.Width := 4;
  20. Canvas.Pen.Color := clRed;
  21. for i := 0 to 15 do
  22. begin
  23. Canvas.Pen.Mode := TPenMode(i);
  24. Canvas.MoveTo(x, y);
  25. Canvas.LineTo(x + n, y);
  26. y := y + 20;
  27. end;
  28. end;

//效果图:

:

 
 http://blog.csdn.net/yanjiaye520/article/details/8315197

TPen的7种Style和16种Mode的更多相关文章

  1. 16种基于 CSS3 & SVG 的创意的弹窗效果

    在去年,我给大家分享了<基于 CSS3 的精美模态窗口效果>,而今天我要与大家分享一些新鲜的想法.风格和趋势变化,要求更加适合现代UI的不同的效果.这组新模态窗口效果包含了一些微妙的动画, ...

  2. 入口点函数的19种消息,AcRxArxApp只处理16种。

    AcRx::AppMsgCode一共有19种消息. 但由IMPLEMENT_ARX_ENTRYPOINT宏实现的App类,只处理了16种消息. 缺: kSuspendMsg = 16,    kIni ...

  3. Web桌面应用框架3:Web桌面应用开发的N种Style

    研究Web桌面应用开发有一段时间了,总结了Web桌面应用开发的一些主流方式. 一.前端Style 这种方式的就是直接实现一个Web程序,再封装一个浏览器展示,相当粗暴和有效.著名的框架就是Electr ...

  4. STL——容器(Set & multiset)编译器提供的16种构造(挖个坑)

    Set & multiset 在vs2019编译器中提供了16种构造方法 1.默认的无参构造 2.比较容器内容,key_comp()函数返回一个比较key的函数. 3.使用迭代器的区间拷贝,拷 ...

  5. 将一种cell当做几种cell使用

    将一种cell当做几种cell使用 将一种cell当做几种cell用是有着一些意义的,比如,有时候,不同的cell之间差异很小,如果再派生一个cell出来,就会显得很麻烦,这时候,将这个cell当做几 ...

  6. 【页面传值6种方式】- 【JSP 页面传值方法总结:4种】 - 【跨页面传值的几种简单方式3种】

    阅读目录 1. URL 链接后追加参数 2. Form 3. 设置 Cookie 4. 设置 Session JSP 页面间传递参数是项目中经常需要的,这应该算是 web 基本功吧. 试着将各种方式总 ...

  7. 20Mybatis_订单商品数据模型_一对一查询——resultType和resultMap两种方式以及两种方式的总结

    上一篇文章分析了数据模型,这篇文章就给出一个需求,这个需求是一对一查询,并完成这个需求. ------------------------------------------------------- ...

  8. curl文件上传有两种方式,一种是post_fileds,一种是infile

    curl文件上传有两种方式,一种是POSTFIELDS,一种是INFILE,POSTFIELDS传递@实际地址,INFILE传递文件流句柄! );curl_setopt($ch, CURLOPT_PO ...

  9. thinkphp 的两种建构模式 第一种一个单入口里面定义两个模块,前台和后台,函数控制模块必须function.php前台加载前台模块的汉书配置文件,后台加载后台模块的汉书配置文件,公共文件共用。第二种架构模式两个单入口文件,分别生成两个应用定义define。。。函数可以定义配置文件。。。。

    thinkphp 的两种建构模式  第一种一个单入口里面定义两个模块,前台和后台,函数控制模块必须function.php前台加载前台模块的汉书配置文件,后台加载后台模块的汉书配置文件,公共文件共用. ...

随机推荐

  1. svg 文字

    <text>标签 在svg中用使用<text>标签去定义一段文字.如 Example 1 在svg中写下 在平坦的路上曲折前行 Example 1 Dome <svg h ...

  2. SurfaceView的补充

    1.什么时候使用:当自定义View需要频繁刷新,或者刷新数据比较大的时候,建议使用SurfaceView取代使用View 2.继承SurfaceView的并重写的步骤:①.继承SurfaceView类 ...

  3. ISP图像质量自动化测试方法

    背景介绍 ISP(Image Signal Processor),即图像处理,主要作用是对前端图像传感器输出的信号做后期处理,主要功能有线性纠正.噪声去除.坏点去除.内插.白平衡.自动曝光控制等,依赖 ...

  4. How Many Fibs?

    How Many Fibs? 点我 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  5. ModelMap和ModelAndView(转)

    转自:http://bao1073740756-126-com.iteye.com/blog/1549597 首先介绍ModelMap和ModelAndView的作用 ModelMap ModelMa ...

  6. javascript总结--2014-04-17

    HTML DOM Function Data http://www.oschina.net/translate/learning-javascript-design-patterns?cmp& ...

  7. 【PAT】1025. PAT Ranking (25)

    题目链接:http://pat.zju.edu.cn/contests/pat-a-practise/1025 题目描述: Programming Ability Test (PAT) is orga ...

  8. 数据指令MOV

    MOV分成三类,第一类不需要拓展(MOV),第二类做符号拓展(MOVS),第三类做零拓展(MOVZ),拓展类型根据源操作数决定. 这三类根据操作的数据类型其后可加l,w,b. MOV操作的操作数可以是 ...

  9. Median of Two Sorted 求两个有序数组的中位数

    中位数是把一个数的集合划分为两部分,每部分包含的数字个数相同,并且一个集合中的元素均大于另一个集合中的元素. 因此,我们考虑在一个任意的位置,将数组A划分成两部分.i表示划分数组A的位置,如果数组A包 ...

  10. DayOfWeek中英文星期转换

    DateTime.Now.DayOfWeek;   //英文星期几 var dayOfWeek = new List<string>() { "星期日", " ...