代码之家  ›  专栏  ›  技术社区  ›  Thomas Mueller

设置Canvas.LineTo的lineend样式

  •  3
  • Thomas Mueller  · 技术社区  · 16 年前

    它看起来像这样(圆的末端):

     ********........******
    **********........******
    **********........******
     ********........******
    

    (其中*为蓝色,.为黄色)

     ********........******
    **********......********
    **********......********
     ********........******
    

    我希望它看起来像这样(streight ends):

     ********........******
     ********........******
     ********........******
     ********........******
    

    2 回复  |  直到 5 年前
        1
  •  4
  •   Uli Gerhardt    7 年前

    ExtCreatePen 有帮助。检查 PS_ENDCAP_* PS_JOIN_* 旗帜。

        2
  •  1
  •   NineBerry    5 年前

    来自的示例代码 DelphiPraxis forum (German language)

    procedure TForm1.FormCreate(Sender: TObject);
       var LogBrush:TLOGBRUSH;
    begin
       ZeroMemory(@LogBrush, SizeOf(LogBrush));
       LogBrush.lbColor:=ColorToRGB(Canvas.Pen.Color);
       LogBrush.lbHatch:=0;
    
       DeleteObject(Canvas.Pen.Handle);
       Canvas.Pen.Handle:=ExtCreatePen(PS_Geometric or PS_Solid or PS_EndCap_Square or PS_Join_Miter, 10, LogBrush, 0, nil);
    end;
    
    procedure TForm1.FormPaint(Sender: TObject);
    begin
       Canvas.MoveTo(0, 0);
       Canvas.LineTo(50, 50);
    end;