![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Объединение нескольких изображений в одно с добавлением текста [D7, WinXP]
seregka © (2005-06-10 12:16:00)Добрый день!
Подскажите, пожалуйста, как объединить несколько изображений в одно. Например, два изображение 800х600. Нужно на выходе одно 800х600, сверху 800х300 - первое, под ним 800х300 - второе.
И как добавить текст в произвольной части изображения.
Заранее благодарен
Grief (2005-06-11 19:25:00) [1]мерцать не будет, если не объединять картинки перед выводом. Тем более, что второй способ имхо будет медленнее
Борыч (2005-06-11 17:18:00) [2]Можно пойти разными путями..
1. Представить слои как наследники TGraphicControl. Это довольно легко в реализации, но работать бдеть отвратительно: когда слоев будет достаточно много, перерисовка будет тормозить или сильно мерцать..
2. Имеем в памяти битмап размером с клиентскую область. На нём уникальными цветами (!) в виде примитивов соответствующих слоям (текст - закрашенный прямоугольник) рисуем все слои, один за другим (те, которые видны на экране). На другом битмапе (тоже размером с видимую область) уже прорисовываем реальное изображение слоев с прозрачностью, текстурами, текстом и т.п. Этот растр и выводим на экран. Главное, чтобы координаты соответствующих слоев на одном и другом растре совпадали. Далее обрабатываем события мыши: смотрим по первому битмапу, на какой цвет пришелся клик курсором. А коли мы знаем, что каждому слою соответствует уникальный цвет, то и знаем какой слой выделять (активировать). Если это текст, можно включать обработку нажатия клавиш, показывать мерцающий курсор и т.д. Перемещение слоя - по тому же принципу. По сути ничего сложного нет. Но можно реализовать так, что будет все летать, а можно так, что страшно тормозить. Дело опыта. :)
seregka (2005-06-11 11:49:00) [3]Не подскажите как?
Борыч (2005-06-11 00:00:00) [4]>seregka (10.06.05 23:31) [4]
Можно.
seregka (2005-06-10 23:31:00) [5]спаисибо.
А не подскажите, а можно ли сделать слои (как в Фотошопе), чтобы этот текст можно было двигать и менять?
Борыч (2005-06-10 22:50:00) [6]>seregka (10.06.05 22:23) [2]
Brush.Style := bsClear;
seregka (2005-06-10 22:23:00) [7]СПасибо.
А как сделать, чтобы задний фон текст прозрачным был
XProger (2005-06-10 13:16:00) [8]
Canvas.Draw(0, i*300, bmp);
...
Canvas.TextOut(X, Y, 'labuda');