|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
03.06.2013, 16:59 | #1 |
Пользователь
Регистрация: 20.05.2012
Сообщений: 13
|
Графический редактор. Некоторые трудности.
С программированием не очень дружу, так что некоторые мои вопросы могут показаться глупыми, за что наперёд извиняюсь.
Вообщем пишу графический редактор (пишу это громко сказано, скорее собираю исходные коды в кучу) и не совсем понимаю как сделать так, чтобы можно было рисовать не только на канве, но и на обычных картинках. Компонент Image подходит в принципе, но при рисовании на картинках они мерцают. Если, не ошибаюсь нужна двойная буферизация. Так и не понял как её реализовать. Прошу код, если не тяжело, или же хотя бы объяснить сам алгоритм. И ещё: так и не пойму, что лучше в моём случае (рисование на канве+ рисование на картинках) - Image или Paint Box? |
03.06.2013, 17:21 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Я думаю что в твоем случае нужно рисовать на канве.
Причем канва эта должна быть созданна отдельно. Не Паинт бокс, не Имейдж, а просто канва в памяти. На нее загрузить изображение и на ней же и рисовать. Тогда при перерисовке не будет мерцать - это и есть двойная фуферизация. когда сначала рисуется в памяти все, а потом скопом переносится на экран.
I'm learning to live...
|
03.06.2013, 18:37 | #3 |
Пользователь
Регистрация: 20.05.2012
Сообщений: 13
|
То есть, как я понимаю, рисовать на канве формы? Создать канву в памяти, а потом с неё выводить на канву формы?
|
03.06.2013, 20:31 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Да. Правильно понимаешь. Именно создать канву: Canv:=TCanvas.Create();
Вообще-то тебе стоит посмотреть примеры с созданием канвы.
I'm learning to live...
|
03.06.2013, 21:02 | #5 |
Пользователь
Регистрация: 20.05.2012
Сообщений: 13
|
Но тогда возникает проблема с открытием и сохранением файлов, свойств LoadFromFile и SaveToFile нету просто. Так же не могу задать размер, Width и Height тоже нету. Может там что-то другое надо писать?
|
03.06.2013, 21:10 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Есть Bitmap c LoadFromFile и SaveToFile. И есть BitBlt
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
03.06.2013, 21:39 | #7 |
Пользователь
Регистрация: 20.05.2012
Сообщений: 13
|
Как мне тогда связать битмап с канвой? Не понимаю(( Алгоритм такой должен быть же:
1. Создать канву в памяти 2. Рисовать на ней 3. Выводить содержимое на форму. И если надо - сохранять или открывать файлы. Канва этого делать не может, но битмап может. Значит содержимое должно в конечном результате находится в переменной типа Bitmap. Так это что, с канвы нужно срисовать ещё в битмап, а потом уже сохранять? |
03.06.2013, 22:25 | #8 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Связка может быть такой: Код:
I'm learning to live...
|
|
04.06.2013, 09:37 | #9 |
Пользователь
Регистрация: 20.05.2012
Сообщений: 13
|
У меня свойств Width и Height для канвы просто нету.
Кстати, а можно объяснить почему лучше использовать именно канву, а не Имейдж. Просто у меня получилось сделать так, чтобы Image не мерцала. Вот так: Код:
Последний раз редактировалось Stilet; 19.06.2013 в 15:42. |
04.06.2013, 12:41 | #10 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Только в виде битмапа отдельного, что тоже вполне допустимо.
I'm learning to live...
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Графический редактор в С++ | Kalinin93 | Помощь студентам | 0 | 04.12.2011 12:17 |
графический редактор | BOKUBOH | Помощь студентам | 0 | 30.03.2011 21:31 |
Графический редактор | toxich | Мультимедиа в Delphi | 6 | 15.02.2010 19:28 |
Графический редактор... | Alex2009 | Мультимедиа в Delphi | 12 | 18.04.2009 23:55 |
Графический редактор | kommunist | Общие вопросы .NET | 1 | 13.01.2008 21:57 |