zoukankan      html  css  js  c++  java
  • GdiPlus[29]: IGPPen: 虚线样式


    通过画笔的 DashStyle 属性可设置或读取虚线样式.

    通过 SetDashPattern 方法或 DashPattern 属性可自定义虚线样式.

    通过 DashPattern 属性还可以读出已有样式定义时的数组.

    自定义虚线样式样式时, 需要元素数是双数的数组数组, 元素值依次表示实线与空白的长度.

    通过 DashOffset 属性可设置虚线偏移.

    系统提供的虚线样式效果:



    自定义的两种样式效果:



    虚线偏移效果:



    测试系统提供的虚线样式:

    uses GdiPlus;
    
    procedure TForm1.FormPaint(Sender: TObject);
    var
      Graphics: IGPGraphics;
      Pen: IGPPen;
      Pt1,Pt2: TGPPoint;
      i: Integer;
    begin
      Graphics := TGPGraphics.Create(Handle);
      Pt1.Initialize(20, 20);
      Pt2.Initialize(200, 20);
    
      Pen := TGPPen.Create(TGPColor.Red, 3);
    
      for i := 0 to 4 do
      begin
        Pen.DashStyle := TGPDashStyle(i);
        Graphics.DrawLine(Pen, Pt1, Pt2);
        Graphics.TranslateTransform(0, Pt1.Y);
      end;
    end;
    

    测试自定义样式:

    uses GdiPlus;
    
    procedure TForm1.FormPaint(Sender: TObject);
    const
      DashPatternArr: array[0..1] of Single = (16, 2);
    var
      Graphics: IGPGraphics;
      Pen: IGPPen;
      Pt1,Pt2: TGPPoint;
    begin
      Pt1.Initialize(20, 20);
      Pt2.Initialize(200, 20);
      Graphics := TGPGraphics.Create(Handle);
      Pen := TGPPen.Create($FF0000FF, 2);
    
      Pen.SetDashPattern([8, 2, 1, 2]);
      Graphics.DrawLine(Pen, Pt1, Pt2);
    
      Graphics.TranslateTransform(0, Pt1.Y);
      Pen.SetDashPattern(DashPatternArr);
      Graphics.DrawLine(Pen, Pt1, Pt2);
    
      Text := IntToStr(Ord(Pen.DashStyle)); //此值应该是 5, 也就是自定义样式 DashStyleCustom
    end;
    

    虚线偏移测试:

    uses GdiPlus;
    
    procedure TForm1.FormPaint(Sender: TObject);
    var
      Graphics: IGPGraphics;
      Pen: IGPPen;
      Pt1,Pt2: TGPPoint;
    begin
      Graphics := TGPGraphics.Create(Handle);
      Pt1.Initialize(20, 30);
      Pt2.Initialize(200, 30);
    
      Pen := TGPPen.Create($FFC71585, 4);
      Pen.DashStyle := DashStyleDashDotDot;
    
      Graphics.DrawLine(Pen, Pt1, Pt2);
      Graphics.TranslateTransform(0, Pt1.Y);
    
      Pen.DashOffset := Pen.DashPattern[0] + Pen.DashPattern[1];
      Graphics.DrawLine(Pen, Pt1, Pt2);
    end;
    
  • 相关阅读:
    String,StringBuffer与StringBuilder的区别??
    Android之NDK开发的简单实例
    Eclipse在线安装插件奇慢的解决办法
    Android之Windows下生成动态库so并打包到APK中
    Android打包之Ant多渠道打包的实现
    Android打包之Ant打入第三方jar包及zipalign对齐优化
    Android打包之将bat脚本转换成ant脚本
    Android打包之bat脚本打包
    利用ant和dedex解析classes.dex
    Ant详解(用Ant实现Java项目的自动构建和部署)
  • 原文地址:https://www.cnblogs.com/del/p/1625217.html
Copyright © 2011-2022 走看看