掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Canvasに描画する線の幅を太くした時、実線にならない方法は? (ID:6524)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
BeginPathとEndPathにはさんで描画し、その後、多角形化、Path情報を取得、描画、という具合にします。 単純なMoveTo, LineToでは、DrawPathでうまく行かなかったのですが、polyLineならたぶんうまく行きます。 2点間の場合、PathUtilsの、DrawPathを、次のように変更すれば一応動きました。 // 図形情報を取り出す FirstIndex := LastIndex; if FirstIndex + 1 < Path.Count-1 then begin を、 // 図形情報を取り出す FirstIndex := LastIndex; if FirstIndex + 0 < Path.Count-1 then begin に。 その上で、 procedure TMainForm.PaintBox1Paint(Sender: TObject); var Path: TPath; begin Path := TPath.Create; try BeginPath(PaintBox1.Canvas.Handle); PaintBox1.Canvas.MoveTo(20,20); PaintBox1.Canvas.LineTo(PaintBox1.Width-20, PaintBox1.Height-20); EndPath(PaintBox1.Canvas.Handle); FlattenPath(PaintBox1.Canvas.Handle); Path.LoadFromCanvas(PaintBox1.Canvas); DrawPath(Path, PaintBox1.Canvas, clRed, 8, [1, 1]); // 点線で描く finally Path.Free; end; end; こんな感じで出来ました。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.