|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.05.2011, 19:46 | #1 |
Форумчанин
Регистрация: 24.03.2011
Сообщений: 120
|
Делаем Paint
Задание сделать подобие Paint'a, т.е. мини графический редактор. Загрузка изображений, рисование каракуль на них, сохранение.
Вопрос - на чём лучше рисовать(на каком компоненте) и есть ли какие нибудь подводные камни(если кто уже с подобным сталкивался). Буду рад как перечню ссылок на статьи, так и корявому ответу в двух словах(тока не грубых и не заставляющих гуглить)). Заранее спасибо. Последний раз редактировалось Ksardas13; 09.05.2011 в 15:37. |
09.05.2011, 01:12 | #3 |
Форумчанин
Регистрация: 24.03.2011
Сообщений: 120
|
Во класс, спасибо, пригодится.
Кстати, ещё интересный вопрос, как реализовать кнопки "отмена"-"возврат". Ну допустим отмена/возврат в одно действие ещё можно - просто над рисунком сделать ещё один невидимый холст, рисовать текущее действие на нём, если пользователь перешёл к следующему действию - старое кидаем на основной рисунок, новое опять рисуем на невидимом слою. Можно даже сделать три таких невидимых слоя, что увеличит возможность откатов до трёх. Но как подобное реализовано скажем в Фотошопе, где количество отмен гораздо больше? Кто нибудь в курсе? |
09.05.2011, 12:30 | #4 |
Пользователь
Регистрация: 14.01.2011
Сообщений: 23
|
Мне в голову приходит следующее:
Поскольку изображение есть совокупность пикселей, а сам пиксель может быть только 1 цвета в единицу времени, то можем представить "полотно для рисования" в виде двумерного массива в ячейки которого записываем цвет пикселя. Вдобавок прикрутить это к стеку (FILO) и записывать в него "снимки" экрана в момент начала (напр. OnMouseDown) рисования и в конце (OnMouseUp). Надеюсь понятно описал... ЗЫ На практике не применял, исключительно полёт мысли |
09.05.2011, 12:44 | #5 |
Форумчанин
Регистрация: 24.03.2011
Сообщений: 120
|
Ну если я тебя правильно понял, то просто фоткать экран в момент касания его кистью. Потом когда кисть отрывается от экрана и вдруг пользователь жахает по кнопке Отмена - заменять холст на холст из фотки.
Тоже можно, но опять же будем хранить в памяти(или где нибудь за экраном) кучу снимков(по количеству возможных откатов). А если вспомнить что в Фотошопе ещё есть и такая штука как слои... Даже представить страшно сколько фигни они хранят за пределами экрана, если Фотошоп позволяет отменять до 30 действий(ну или где то так)... |
09.05.2011, 15:21 | #6 |
Форумчанин
Регистрация: 24.03.2011
Сообщений: 120
|
О, У МЕНЯ ПОЛНОЦЕННЫЙ ВОПРОС!!
Как реализовать заливку? Есть такой вариант http://www.codenet.ru/progr/video/alg/alg5.php, но может есть способ полегче? |
09.05.2011, 15:34 | #7 |
Пользователь
Регистрация: 14.01.2011
Сообщений: 23
|
"Пример показывает один из самых простых и эффективных способов заливки."
Проще взять готовое |
09.05.2011, 15:37 | #8 |
Форумчанин
Регистрация: 24.03.2011
Сообщений: 120
|
Просто рисую кок раз на канве компонента Timage. Ох боюсь глючить будет. Ладно, щас попробую попробывать.))
Если кому пригодится, вот кое что нашёл: http://www.ad.cctpu.edu.ru/Personal/...ill%5CFill.htm Последний раз редактировалось Ksardas13; 09.05.2011 в 15:47. |
09.05.2011, 18:45 | #9 |
Форумчанин
Регистрация: 24.03.2011
Сообщений: 120
|
Кто ради прикола(хотя пока я пользюсь этой процедурой и быстродействие ох как хочется поднять) поможет оптимизировать следующий бред:
Код:
ps: 865 и 505 это габариты Image1_pic Последний раз редактировалось Ksardas13; 09.05.2011 в 18:55. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Делаем фреймы) | Lyubov1990 | HTML и CSS | 4 | 20.01.2011 19:31 |
Банкомат делаем.. | Andrey_andrey | Microsoft Office Access | 1 | 24.05.2009 16:18 |
делаем код программы легче | XFilippowX | Общие вопросы Delphi | 4 | 15.02.2009 11:20 |
Paint | Артэс | Win Api | 4 | 30.11.2008 02:09 |
paint | ben95 | Общие вопросы Delphi | 1 | 30.03.2008 09:27 |