4

TImage Canvas で破線を描いていますが、破線のサイズが描画領域に対して大きすぎることがわかりました。キャンバスに描かれた線の破線のサイズを変更する方法はありますか?
これは、破線を描くことができるようにするために私がしていることです。

Canvas.Pen.Style := psDash;
Canvas.Polyline(myPoints);

そして、ダッシュのサイズ/長さを変更できる Pen プロパティが見つかりませんでした。

ありがとう

4

2 に答える 2

6

http://docwiki.embarcadero.com/VCL/e/index.php/Graphics.TPenStyleによると、psUserStyle を使用できます

ExtCreatePen のドキュメントはhttp://msdn.microsoft.com/en-us/library/dd162705(VS.85).aspxにあります。

ExtCreatePen を TPen と組み合わせて使用​​する方法についての私の解釈は次のとおりです。

const
  NumberOfSections = 8;
  LineLengths: array[0..NumberOfSections-1] of DWORD =
    (20, 15, 14, 17, 14, 8, 16, 9);
var
  logBrush: TLogBrush;
begin

  logBrush.lbStyle := BS_SOLID;
  logBrush.lbColor := DIB_RGB_COLORS;
  logBrush.lbHatch := HS_BDIAGONAL; // ignored

  Canvas.Pen.Handle := ExtCreatePen(PS_GEOMETRIC or PS_USERSTYLE or PS_ENDCAP_ROUND or PS_JOIN_BEVEL,
                      4, logBrush, NumberOfSections, @LineLengths[0]);
  // now Canvas.Pen.Style = psUserStyle

  Canvas.Polyline([Point(0,0), Point(100,100), Point(200, 100)]);

end;
于 2010-06-26T13:32:00.907 に答える
0

わかりませんが、Polyline() の実装はどれですか? コントロール+クリックすると、どのコードが表示されますか? プロパティに公開された変数を使用している可能性がありますか? もしそうなら、あなたはそれを設定することができます。

于 2010-06-26T12:03:17.343 に答える