|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.12.2007, 16:14 | #1 |
Регистрация: 03.12.2007
Сообщений: 4
|
Canvas
У меня такая проблема, нужно в paintboxе ,после того как в нем нарисовали что-либо, закрепить нарисованное, а то если открыть поверх paintboxа еще какое-нибудь окно, то все из paintboxа стирается (тоже самое получается если применить refresh), остается только то что я рисую программно в процедуре OnPaint.
Может быть есть какое-нибудь свойство,подскажите плиз |
05.12.2007, 16:28 | #2 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,691
|
Нарисуйте ваш рисунок в буфере и по событию OnPaint выведите содержимое буфера в paintbox.
За буфер я подразумеваю buf:Tbitmap. |
05.12.2007, 16:51 | #3 |
Регистрация: 03.12.2007
Сообщений: 4
|
Я не знаю как так сделать, я в делфе новичок,с Bitmap никогда не сталкивался, делаю японские кроссворды, расчерчиваю поле в OnPaint а рисую по нажатию левой кнопки мыши, если видел вообще японские кроссворды ты меня поймешь
|
05.12.2007, 17:03 | #4 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,691
|
var
buf: tbitmap; по событию tform1.oncreate buf:=tbitmap.create; buf.width:=(ширина в пикселях) buf.height:=(высота в пикселях); теперь там где у тебя написано paintbox1.canvas... вместо paintbox1 пиши buf и по событию onpaint в конце пиши paintbox1.canvas.draw(0,0,buf); |
05.12.2007, 17:12 | #5 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
На форуме проходил конкурс по этой теме, вроде бы там и исходники есть. Поищите по этим ключевым словам...
|
05.12.2007, 17:22 | #6 |
Регистрация: 03.12.2007
Сообщений: 4
|
Почти помогло, есть кое какие недочеты, объясни пожалуйста че такое Bitmap и вот эту строчку - paintbox1.canvas.draw(0,0,buf)
|
05.12.2007, 17:26 | #7 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,691
|
Bitmap - это Битовый образ.
При работе с графикой удобно использовать объекты типа TBitMap (битовый образ). Битовый образ представляет собой находящуюся в памяти компьютера, и, следовательно, невидимую графическую поверхность, на которой программа может сформировать изображение. Содержимое битового образа (картинка) легко и, что особенно важно, быстро может быть выведено на поверхность формы или области вывода иллюстрации (image, paintbox). |
05.12.2007, 17:28 | #8 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,691
|
Вывести содержимое битового образа (картинку) на поверхность формы или области вывода иллюстрации можно путем применения метода Draw к соответствующему свойству поверхности (canvas). Например, инструкция
paintbox1.Canvas.Draw(x,у, buf); выводит картинку битового образа buf на поверхность компонента paintbox1 (параметры х и у определяют положение левого верхнего угла картинки на поверхности компонента). |
05.12.2007, 18:34 | #9 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
2 Zven
Костя правильно советует, я лишь дополню. Для вывода такого рода графики удобно чтобы еще был фон кроме буфера. Такой же битмап как и буфер с теми же размерами. В самом начале нарисуй в нем сетку и что там тебе еще на фоне надо. И больше в нем не рисуй. А все остальное что может меняться рисуй уже в буфере, перед этим скопировав туда фон. Буфер выводи на экран. Наример, нужно что-то новое нарисовать Код:
Другими словами лучше нарисовать чем перерисовать. Перед перерисовкой канва очищается, что вызывает мерцание.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
06.12.2007, 10:40 | #10 |
Регистрация: 03.12.2007
Сообщений: 4
|
Огромное спасибо вы мне очень помогли, но я решил свой вопрос по другому, просто вывел картинку не через paintbox а через image и все получилось
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вопрос с canvas | Манжосов Денис :) | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 7 | 09.03.2009 23:09 |
Как очистить Canvas? | beegl | Общие вопросы Delphi | 4 | 30.05.2008 02:51 |
Подключение Canvas | Zeraim | Общие вопросы Delphi | 4 | 13.05.2008 20:51 |
Как очистить Canvas? | Pro_BerSerK | Общие вопросы Delphi | 9 | 30.01.2008 16:03 |
Canvas (Канва) - заливка фигуры произвольной формы | Albenous | Общие вопросы Delphi | 13 | 24.02.2007 13:21 |