Можно столкнуться с проблемой при отрисовке пунктирных линий на канве с шириной более единицы:
Я решил проблему следующим образом:
Вместо ожидаемого будет проведена прямая шириной в 2 пикселя.Canvas.Pen.Width := 2; Canvas.Pen.Style := psDot; Canvas.MoveTo(x, y1); Canvas.LineTo(x, y2);
Я решил проблему следующим образом:
procedure LineDotedTo(Canvas: TCanvas; X, Y: Integer); var lb: LOGBRUSH; begin lb.lbStyle := BS_SOLID; lb.lbColor := Canvas.Pen.Color; Canvas.Pen.Handle := ExtCreatePen(PS_GEOMETRIC or PS_DASH, Canvas.Pen.Width, lb, 0, nil);
Canvas.LineTo(X, Y); end; ... Canvas.MoveTo(x, y1); LineDotedTo(Canvas, x, y2);
Комментариев нет:
Отправить комментарий