SASGIS

Веб-картография и навигация


View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0002616SAS.ПланетаРефакторингpublic30-01-2015 14:1130-12-2021 08:59
Reportervdemidov 
Assigned To 
PrioritynormalSeverityminorReproducibilityhave not tried
StatusconfirmedResolutionopen 
PlatformOSOS Version
Product Version141212 
Target Version25xxxxFixed in Version 
Summary0002616: Создать интерфейс рендеринга текста в IBitmap32Static
DescriptionСейчас для вывода текста на карте и некоторых частях интерфейса (строка статуса и подписи линейки) напрямую используются средства GR32 TBitmap32.RenderText, которое умеет выводить текст с прозрачностью и антиалиайзингом, но иногда этого не хватает и приходится реднерить текст несколько раз с разными смещениями для получения тени, или обходить пикселы и дорисовывать окантковку у букв и тд. Нужно сделать интерфейс ITextRenderer, который будет получать текст и параметры отрисовки, после чего генерировать нужную битмапку. Это позволит уменьшить зависимость от реализации и позволит добавить кэширование и тд.
TagsNo tags attached.
Attached Filespng file icon aa_0.png [^] (6,165 bytes) 03-05-2019 12:24


png file icon aa_-1.png [^] (7,085 bytes) 03-05-2019 12:24

- Relationships
related to 0002164resolvedvdemidov Сделать отдельный кэш для маркеров подписей меток-точек 

-  Notes
(0018693)
zed (manager)
03-05-2019 08:11

К слову, о кэшировании: в SunCalc надписи кэшируются и рендерятся методом RenderText, но я заметил, что текст получается немного не таким, как, например, у линейки, где текст рендерится без кэширования методом TextOut.

А ещё, когда я попытался использовать TextOut для кэширования, у меня никак не вышло сделать полупрозрачную надпись - шрифт расползается.

Как мне кажется, TextOut даёт более лучший результат и если его не получится нормально кэшировать, то с повсеместным переходом на предлагаемый интерфейс и метод RenderText, качество шрифтов ухудшится.
(0018694)
vdemidov (manager)
03-05-2019 10:26

Ну, если я правильно все понимаю, то RenderText только добавляет возможность делать надписи произвольного цвета и с прозрачностью. Ну и еще антиалиайзинг позволяет сделать. За счет копирования из временной битмапки.

> А ещё, когда я попытался использовать TextOut для кэширования, у меня никак не вышло сделать полупрозрачную надпись - шрифт расползается.
Ну, всегда можно поставить AALevel = -1 и использовать RenderText.
Можно вообще свой сделать, который будет обводку делать нормальную, а не двумя выводами RenderText. Это будет правильнее. В любом случае, вся эта кухня будет скрыта, а для вывода на экран достаточно будет просто накладывать готовую битмапку.

>Как мне кажется, TextOut даёт более лучший результат
Подозреваю, что это только на свежих виндах, а на XP все может быть не так радужно, но нужно смотреть.
(0018695)
zed (manager)
03-05-2019 11:31

На XP выглядит одинаково, т.к. там нету сглаживания, а вот в Win7 и выше TextOut рисует нормально, а RenderText без сглаживания и изменение AALevel не даёт такого же результата.

Эта кухня может быть скрыта только при отказе от TextOut, чего не хотелось бы. Я бы наоборот хотел все RenderText заменить на TextOut.
(0018696)
vdemidov (manager)
03-05-2019 12:06

> RenderText без сглаживания и изменение AALevel не даёт такого же результата.
А ты пробовал AALevel = -1 ставить? Там включается штатное сглаживание и только добавляется установка альфы.

Посмотри исходники RenderText. Там при AALevel = -1 почти ничего не делается с картинкой. ИМХО должно быть как-раз то чего ты хочешь. Разве что если там применяется субпиксельное сглаживание, тогда могут быть чудеса.
(0018697)
zed (manager)
03-05-2019 12:22

Исходники я конечно же смотрел и с AALevel пробовал все допустимые значения - всё не то и со штатным сглаживанием не сравнится.

Сейчас скриншотов добавлю.
(0018698)
vdemidov (manager)
03-05-2019 12:46

К скриншотам комментариев не хватает, где там RenderText, а где TextOut
(0018699)
zed (manager)
03-05-2019 12:50

TextOut - сверху.
(0018700)
vdemidov (manager)
03-05-2019 12:58

Что называется "Вы не поверите", но мне нижние надписи нравятся больше :)
Видимо я таки не люблю сглаживание.

- Users who viewed this issue
User List Anonymous (1592x), ingener (1x), vdemidov (26x), rass (2x), zed (12x)
Total Views 1633
Last View 02-07-2022 08:41

- Issue History
Date Modified Username Field Change
30-01-2015 14:11 vdemidov New Issue
30-01-2015 14:11 vdemidov Status new => confirmed
04-08-2015 10:11 vdemidov Relationship added child of 0002164
04-10-2015 15:28 vdemidov Target Version 151010 => 151111
06-11-2015 08:20 vdemidov Target Version 151111 => 191221
03-05-2019 07:17 vdemidov Target Version 191221 => 190707
03-05-2019 08:11 zed Note Added: 0018693
03-05-2019 09:56 vdemidov Relationship replaced related to 0002164
03-05-2019 10:26 vdemidov Note Added: 0018694
03-05-2019 11:31 zed Note Added: 0018695
03-05-2019 12:06 vdemidov Note Added: 0018696
03-05-2019 12:22 zed Note Added: 0018697
03-05-2019 12:24 zed File Added: aa_0.png
03-05-2019 12:24 zed File Added: aa_-1.png
03-05-2019 12:46 vdemidov Note Added: 0018698
03-05-2019 12:50 zed Note Added: 0018699
03-05-2019 12:58 vdemidov Note Added: 0018700
23-07-2019 14:16 vdemidov Target Version 190707 => 191221
23-07-2019 17:04 vdemidov Target Version 191221 => 211230
30-12-2021 08:59 zed Target Version 211230 => 25xxxx



Copyright © 2007 - 2022 SAS.Planet Team