5

TCanvas.LineTo メソッドの線端のスタイルを設定する方法はありますか? Pen.Width が大きな値 (9 など) に設定されている場合、異なる色の行に複数の行が表示されると、デフォルトで丸みを帯びた端になるようです。

次のようになります (端が丸くなっています)。

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

(* は青色、. は黄色)

中央の線の後に外側の 2 つの線が引かれると、さらに悪化します。

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

私はそれがこのように見えることを望みます(ストレートエンド):

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

Pen はこれに対する設定を提供していないようで、LineTo メソッドも提供していません。私が呼び出すことができるWindows API関数はありますか?

4

2 に答える 2

4

たぶんExtCreatePenが役に立ちます。PS_ENDCAP_*PS_JOIN_*フラグを確認してください。

于 2008-12-15T14:56:18.520 に答える
1

DelphiPraxis フォーラムのサンプル コード(ドイツ語)

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; 
于 2019-11-28T12:42:48.413 に答える