Перейти к содержанию
Fire Monkey от А до Я
  • 0

Утолщение линии при отрисовке на Canvas


Maximus

Вопрос

Доброго всем времени суток. Хочу снова поднять вопрос про отрисовку линий на канве, обсуждавшейся здесь

С горизонтальными и вертикальными линиями проблем нет, при смещении на половину от толщины линии всё прекрасно выглядит. Однако при отрисовке линий под различными углами такой финт не проходит: слева VCL, справа FMX

VCL.jpgFMX.jpg

Линия всё так же размазывается, в итоге визуально утолщается и становится не такой чёткой.

Как всё же добиться такого же результата как на VCL? Интересует только Windows.

const
  OFFSET_LINE = 0.5;
...
  Image.Bitmap.Canvas.BeginScene;
  Image.Bitmap.Canvas.Stroke.Kind := TBrushKind.Solid;
  Image.Bitmap.Canvas.Stroke.Thickness := 1.0;
  Image.Bitmap.Canvas.DrawLine(
        PointF(10.0 - OFFSET_LINE, 10.0 - OFFSET_LINE),
        PointF(500.0 - OFFSET_LINE, 10.0 - OFFSET_LINE), 1.0);
  Image.Bitmap.Canvas.DrawLine(
        PointF(10.0 - OFFSET_LINE, 10.0 - OFFSET_LINE),
        PointF(10.0 - OFFSET_LINE, 500.0 - OFFSET_LINE), 1.0);
  Image.Bitmap.Canvas.DrawLine(
        PointF(10.0 - OFFSET_LINE, 10.0 - OFFSET_LINE),
        PointF(500.0 - OFFSET_LINE, 500.0 - OFFSET_LINE), 1.0);
  Image.Bitmap.Canvas.EndScene;

 

Изменено пользователем Maximus
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Никак не повлияло на отрисовку.

Пока я единственным выходом вижу отрисовку линии вручную попиксельно с округлением и со сдвигом. Но всё же это костыль какой-то, хоть и работает.

Ссылка на комментарий
  • 0

1) окрыть project.dpr (меню.Project.View Source)
добавить

uses
  FMX.Types,
  ......
begin
  //отключить использование канвы D2D
  GlobalUseDirect2D:= false;

  Application.Initialize;
....
end.

2) В главной форме приложения перекрыть OnFormCreate

procedure TForm1.FormCreate(Sender: TObject);
begin
  Quality:=TCanvasQuality.HighPerformance;
....
end;

Теперь PaintBox на форме в PaintBox1Paint рисует прямые в 1 пиксел, но без
сглаживания.

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...