0 / 0 / 0
Регистрация: 09.05.2011
Сообщений: 14
|
|
1 | |
Рисование поверх другого изображения22.08.2012, 12:35. Показов 9537. Ответов 5
Метки нет Все метки)
(
Здравствуйте форумчане!
Возник такой вопрос: Нужно рисовать поверх другого изображения, с возможностью редактирования нарисованного. Допустим, что на PainBox'e выведен текст через TBitmap. Рисовать поверх текста карандашом получается. Но нужно, чтобы нарисованное карандашом, можно было стирать "ластиком". Когда начинаешь затирать ластиком нарисованное, стирается и выведенный текст. На картинке показано как получилось. Поэтому, как быть? Говорят, что нужно что-то со слоями делать, но я не разобрался. Подскажите пожалуйста.
0
|
22.08.2012, 12:35 | |
22.08.2012, 12:35 | |
Ответы с готовыми решениями:
5
Как разместить изображение из Label поверх другого изображения? Рисование поверх jpg Обьект поверх другого обьекта |
Супер-модератор
![]() ![]() ![]() |
|
22.08.2012, 18:53 | 2 |
Проблема у тебя - в том, что ты не затираешь нарисованное карандашом. А просто перекрашиваешь это цветом фона. При таком подходе невозможно добиться удаления рисунка с одного слоя без затрагивания другого. Вот если бы ластиком действительно удалял ранее нарисованное, то созданием дополнительного прозрачного битмапа над PaintBox-ом (ну, можно называть это слоем) можно было решить проблему.
Но прозрачность - это скорее GDI+.
0
|
![]() 3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
|
|
22.08.2012, 20:02 | 3 |
Можно использовать несколько Bitmap и накладывать их в PaintBox (CopyRect), используя CopyMode. Вот какое именно значение CopyMode использовать - не могу сказать. Нужно поэкспериментировать. А при рисовании/стирании - рисовать/стирать на Bitmap-е, который в настоящий момент является верхним слоем. В общем делать по типу, как это реализовано в Фотошопе. Да, наверное, и в других графических редакторах. Организовать перемещение слоя наверх, объединение и т.д.
0
|
0 / 0 / 0
Регистрация: 09.05.2011
Сообщений: 14
|
||||||
23.08.2012, 13:25 [ТС] | 4 | |||||
Спасибо, UI и Одиночка!!! Получилось!!!
![]() bmp1.TransparentMode := tmAuto; bmp1.Transparent:=true; также и для второго. Затем в событии OnPaint PaintBox'а их объединяем в ещё один - третий битмап. вот кусочки кода:
0
|
0 / 0 / 0
Регистрация: 09.05.2011
Сообщений: 14
|
||||||
29.08.2012, 09:49 [ТС] | 6 | |||||
Нашелся ещё один способ решения этой проблемы:
Текст подложки не рисуется, а вставляется в компонент image как рисунок. Рисунок же грузим в свойство Picture. Чтобы image не мешался рисовать на PaintBox'е, у image в свойстве visible ставим false. Затем также, вместо второго Bitmap PaintBox'а рисуем image.
0
|
29.08.2012, 09:49 | |
29.08.2012, 09:49 | |
Помогаю со студенческими работами здесь
6
Как написать текст поверх изображения ? Delphi Xe3, SpeedButton текст поверх изображения. Как?
Рисование линии разными стилями и стирание изображения
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
![]() |
Новые блоги и статьи
![]() |
||||
Создаем SPA Router на чистом JavaScript
bytestream 17.02.2025
В современной веб-разработке одностраничные приложения (SPA) стали стандартом для создания динамичных и отзывчивых пользовательских интерфейсов. Ключевым компонентом любого SPA является роутер -. . .
|
Машинное обучение на TypeScript и TensorFlow
bytestream 17.02.2025
Машинное обучение становится все более востребованным направлением в современной разработке программного обеспечения. Интеграция искусственного интеллекта в веб-приложения открывает новые возможности. . .
|
Манипуляция данными EXIF и JPEG в JavaScript
bytestream 17.02.2025
В современном мире цифровой фотографии метаданные изображений играют важнейшую роль в организации и управлении медиаконтентом. Формат EXIF (Exchangeable Image File Format) - это стандарт,. . .
|
Как создать GUID/UUID в JavaScript
bytestream 17.02.2025
GUID (Globally Unique Identifier) и UUID (Universally Unique Identifier) - это специальные форматы 128-битных идентификаторов, которые практически гарантируют уникальность значения во времени и. . .
|
Что такое мышление в упрощенном смысле (моё субъективное видение, для создания модели).
Hrethgir 17.02.2025
Разумеется упрощать смысл есть. Дело в том, что я пришёл к тому выводу, что даже если я создам свой процессор (конвейер), то первое для чего смогу его использовать в качестве демонстративного. . .
|
Как Node.js устроен изнутри
Wired 17.02.2025
Node. js коренным образом изменил подход к веб-разработке, позволив использовать JavaScript не только в браузере, но и на стороне сервера. Созданный в 2009 году Райаном Далем, Node. js представляет. . .
|
Как обновить Node.js в Windows
Wired 17.02.2025
Думаю, многие разработчики сталкивались с ситуацией, когда устаревшая версия Node. js становилась источником проблем - от несовместимости с новыми пакетами до уязвимостей в безопасности. Особенно это. . .
|
Как обновить Node.js в MacOS
Wired 17.02.2025
В Node. js существует несколько подходов к обновлению, каждый из которых имеет свои преимущества и особенности применения. Выбор конкретного метода зависит от ваших потребностей - будь то. . .
|
Как обновить Node.js в Linux
Wired 17.02.2025
Обновление Node. js может показаться сложной задачей, особенно если у вас несколько проектов с разными зависимостями. Однако существует несколько надежных способов обновления, подходящих для разных. . .
|
[golang] 134. Gas Station
alhaos 17.02.2025
Тут нам даны два целочисленных слайса gas и cost, индексы массива представляют собой заправочные станции. а элементы gas это количество топлива на такой станции, cost это количество топлива. . .
|