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

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

#0

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

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


#1

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

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

9 сен. 2018

#2

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

9 сен. 2018

#3

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

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

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

#4

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

10 сен. 2018

#5

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

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

#6

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

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

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

#7

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

17 сен. 2018

#8

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

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

#9

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

18 сен. 2018

#10

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

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

#11

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

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

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

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

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

#12

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

13 ноя. 2018

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