Есть ли любой способ установить стиль для lineends для TCanvas. Метод LineTo? Это, кажется, принимает значение по умолчанию к округленным концам, который выглядит очень плохо для нескольких строк подряд различных цветов когда Pen. Ширина установлена на большое значение (например, 9).
Это похоже на это (округленные концы):
********........******
**********........******
**********........******
********........******
(где *, например, синий и. является желтым),
Это еще хуже, если две внешних линии проведены после средней строки:
********........******
**********......********
**********......********
********........******
Я хотел бы, чтобы это было похоже на это (прямые концы):
********........******
********........******
********........******
********........******
Перо, кажется, не предлагает установки для этого, и ни один не делает метод LineTo. Существует ли, возможно, API-функция окон, которую я мог назвать?
Возможно, ExtCreatePen помогает. Проверьте PS_ENDCAP_*
и PS_JOIN_*
флаги.
Пример кода от форум 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;