Войти
Вело-изобретателиФорумSR2D - софтовый 2D движок

Текста прорисовка в SR2D_Sprite напрямую быстро и разнообразно

#0
(Правка: 19:24) 19:17, 9 сен. 2018

dll-ка рисующая текст подготовленым шрифтом сразу в спрайт
для vb6 один модуль modSR2DPrint    и 2 класса SR2D_Font0 и SR2D_Font1
SR2D_Font1 содержит один шрифт с одним размером (набор рисунков символов)
SR2D_Font0 содержит коллекцию SR2D_Font1 с возможностью выбора по заданному FontSize подходящего SR2D_Font1 и также возможность сохранять коллекцию в файл и читать
modSR2DPrint содержит Type ... End Type и подпрограмму вывода текста и подпрограммы настройки способа вывода (цвета, прозрачность, рамку, заливку, наличие или отсутствие ограниченного окна внутри спрайта, центровки по вертикали и горизонтали и т.д.


#1
19:35, 9 сен. 2018

первая форма
Print2d Form1 | Текста прорисовка в SR2D_Sprite напрямую быстро и разнообразно

первая форма с прозрачным ClearBuffer_Alpha на заданную область
ClearBuffer_Alpha на Form1 | Текста прорисовка в SR2D_Sprite напрямую быстро и разнообразно

#2
19:36, 9 сен. 2018

и вторая форма Form2 для испытаний и настройки текста
Print2d Form2 | Текста прорисовка в SR2D_Sprite напрямую быстро и разнообразно

#3
(Правка: 10 сен. 2018, 21:12) 21:40, 9 сен. 2018

текст можно двигать мышкой левой кнопкой
архив Print2D версия 2.2 отключена оценка размера в dll

убрал мерцание при поднятии вверх и растяжение закраски фона под символом (режим: общий фон не красится(FonClearBox=0), но фон под каждым символом персонально красится (FonClearSim=1))
архив Print2D v2.3.rar убрано мерцание на границе
Print2D v2.4.rar добавлена реакция на пр кн мыши по окну текста

#4
20:16, 10 сен. 2018

Кажется, баг: бордер обрезает символы, но не фоновую заливку.

#5
(Правка: 17 сен. 2018, 6:45) 21:37, 10 сен. 2018

проверил в 2.4 ничего нету - возможно убрал - много сегодня дорабатывал границы выше написано про растяжение фона от символа
а по клику правой кнопкой сделал имитацию нажатия кнопки (вкл режим кнопки и отмено фонового рисунка)
а баги с фоном и мерцанием на границе ранее не замечал так как не было нормальной тестилки а целью было доработать и совместить свойства
11-09-2018 проверил варианты ещё раз (запускал проект из редактора а не .EXE файл) не одного визуального бага не заметил - откомпилирую и выложу
Print2D v2.5.rar откомпилировал Проект1.exe файл
упс заметил - щас поправлю
Print2D v2.7 порезал баги с растяжкой и исчезновением (1 остался)
остался мелкий баг при центровке по центру вертикально если плавно сужать границы верхняя строка исчезает на 3 пикселя раньше чем можно было бы
14-09-2018 справку с примерами на выходных только смогу
17-09-2018 а вот и выходной

#6
(Правка: 21:24) 21:24, 17 сен. 2018

вот пока неполная справка (прокоментировал что успел в проге и скопировал в текст файл)
HELP справка по Print2D

и прога с этими коментариями Print2D v2.8 со справкой (неполной пока)

#7
22:43, 17 сен. 2018

Включение-выключение Border сдвигают строки вправо-вниз на пиксель, но не всегда и не все строки. С фоновой заливкой теперь всё нормально.

#8
(Правка: 20:30) 20:20, 18 сен. 2018

да вкл бордера сдвигают текст на 1 пиксель так как бордер рисуется в границах окна и ранее там где был бордер было место для символов но с появлением рамки текст ограничивается на 1 пиксель со всех сторон чтобы не затереть бордер и ограничение текста слева и сверху на пиксель по сути сдвигают начало рисования на пиксель которы теперь занят бордеромм (толщина бордера 1 пиксель)
и ещё дополнительно при включении опции Bordert3dDown текст сдвигается дополнительно на 1 пиксель вправо и вниз - это сделано для визуального эфекта нажатия кнопки так как при внешнем виде вдавливания поверхности текст не вдавливается и возникает эфект что текст всплыл чуть верх что полностью уничтожает визуальный эффект вдавливания кнопки
для справки если ColorBord1=белый и ColorBord2=чёрный то на сером фоне при Bordert=1 и Bordert3d=1 Bordert3dDown=0 возникает вид стандартной кнопки и если Bordert3dDown переключить из 0 в 1 (что меняет цвета местами) вид кнопки становится "нажатым" 

#9
20:26, 18 сен. 2018

Neirapik
> да вкл бордера сдвигают текст на 1 пиксель так как бордер рисуется в границах окна
Это понятно, но я писал: "но не всегда и не все строки". Я включаю-выключаю бордюр - некоторые строки не сдвигаются вправо, только вниз. Меняю содержимое строк - меняется поведение, но закономерности я не нашёл.

#10
(Правка: 20:38) 20:32, 18 сен. 2018

но тут может быть просто - если центровка включена по центру то текст не сдвигается - уменьшается свободное пространство вокруг строки (или срезается часть строки) а сама строка остаётся по центру
соответственно для горизонтальной и вертикальной центровки если горизонтальная по центру а вертикальная по верху или никак то вертикальный старт строки смещается а горизонтальный нет и т.д. и т.п.  - коротко говоря привязка положения строки (строк) может быть к краям, а может быть и к центру - смотря что выбрано

#11
(Правка: 21 сен. 2018, 22:02) 20:42, 18 сен. 2018

и да расчёт центра идёт по целочисленному и округление при делении может давать погрешность в один пиксель для строк разной длины при изменении свободного места - попробую вещественные числа
хотя мне кажется полностью избежать взаимный сдвиг строк на 1 пиксель туда сюда вокруг оптимального положения при изменении размера по горизонтали никак не избежать ведь положение на экране идёт в реально существующих и неделимых пикселях что всё равно требует округления которое при разнице в 0.1 пикселя может дать целый пиксель (выбирать то приходиться между пикселями а не их частями)
и кстати такой же эффект однопиксельного блуждания строк относительного друг друга можно увидеть при плавном изменении горизонтального размера окна текста.
- и повторюсь: размер окна можно плавно менять стрелками на клавиатуре попиксельно поставив курсор в  числовой текст размера окна (в левом верхнем углу Form2 два белых текстовых окошка друг за другом)
окошки ввода размера  текстового окна | Текста прорисовка в SR2D_Sprite напрямую быстро и разнообразно

пардон был неправ - сделал расчёт на числах с запятой вместо целочисленных с округлением результата к ближайшему целому - и хм - блуждания исчезли (мдааа старею)
Print2D v2.9 убран однопиксельный сдвиг по горизонтали

также перевёл на вещественные числа и расчёт положения по вертикали
Print2D v3.0 вертикаль тоже теперь плавно и без раннего исчезновения

проявился баг растяжки фона при плавном опускании окна за низ спрайта (из за особености  SetLockRect (которую раньше не замечал) в нём нижняя и правая граница пропускает пиксели а верхняя и левая нет то есть верх и лево по принципу ">",    а низ и право  "=>")
Print2D v3.1 убран баг растяжки фоновой заливки 

#12
21:08, 13 ноя. 2018

извиняюсь что долго отсутствую - смена вертикали власти на работе и нет слов пока для форума (одни лишь выражения не имеющие отношение к этой теме)

Прошло более 9 месяцев
#13
(Правка: 10:29) 10:26, 1 сен. 2019

упс! на днях заметил что при выводе текста и фона не учитывается исходный SetLockRect в спрайте и поправил этот досадный момент. Позже выложу исправленный исходник

P.S. заметил когда применил эту текстовыводилку в самодельном компоненте типа List - таблица и увидел как крайние блоки текста вылазиют за пределы окна компонента

P.P.S. ну и наверно уберу все лишние публичные параметры и процедуры кроме самых нужных в компоненте (наверно, даже может быть скоро !?! )

Вело-изобретателиФорумSR2D - софтовый 2D движок