![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TImage=>Canvas и отрисовка [D7, WinXP]
Faiwer © (2009-02-26 21:58:00)Удалено модератором
Примечание: http://www.delphimaster.ru/forums.shtml#rule Запрещается: п.7
sco (2009-02-27 14:16:00) [1]>> для эксперимента:
>> кинь два Timage рядом друг с другом и button,
>> во 2 Timage загрузи картинку (желательно не меньше 640х480),
>> на кнопку такой код:
>> image1.Picture.Bitmap.Canvas.Draw(0,0, image2.Picture.Bitmap );
>> form1.Canvas.Draw(0,0, image2.Picture.Bitmap);
>> анализируй увиденное...
собственно сделал. это универсальный способ убить обе имаги и канву формы =) вот тока анализировать это не получается... почему при считывании данных с второй имаги она сама дохнет, и данные не передаёт? каждая из предложенных вами строчек кода не работает так как должна работать =) они просто тушат имаги =) Draw не предназначена для частой передачи данных? или для передачи больших данных? Draw не сбалансированная процедура?
sco (2009-02-27 13:55:00) [2]>> Timage в runtime создается?
да. сразу 15 штук. но те которые глючат они на форме изначально.
>> и странно, но image1.Picture нет Canvas
>> он есть у image1.Picture.Bitmap.Canvas.Draw...
>> в общем с такими исходными данными (=0) - шоибка в 17 строке
очепятолся, я имел ввиду Image1.canvas
>> для эксперимента:
>> кинь два Timage рядом друг с другом и button,
>> во 2 Timage загрузи картинку (желательно не меньше 640х480),
>> на кнопку такой код:
>> image1.Picture.Bitmap.Canvas.Draw(0,0, image2.Picture.Bitmap );
>> form1.Canvas.Draw(0,0, image2.Picture.Bitmap);
>> анализируй увиденное...
попробую
Вообще, всю твою картинку с кораблями и прочее надо держать
в промежуточном TBitmap и обновлять там же, когда есть необходимость.
В OnPaint PaintBox-а выводить все это на канву последнего.
GDI сама разберется какую часть перерисовывать и т.д.
сделает все оптимальным образом.
интересно. первый раз слышу про PaintBox, пойду рыть инфу =)
DVM (2009-02-27 12:08:00) [3]Вообще, всю твою картинку с кораблями и прочее надо держать в промежуточном TBitmap и обновлять там же, когда есть необходимость. В OnPaint PaintBox-а выводить все это на канву последнего. GDI сама разберется какую часть перерисовывать и т.д. сделает все оптимальным образом.
DVM (2009-02-27 12:05:00) [4]
> Есть какие нибудь предположения почему имаги дохнут?
Потому что ты неправильно используешь TImage.
Он вообще НЕ ПРЕДНАЗНАЧЕН для рисования. Для рисования предназначен PaintBox как и следует из его названия, а TImage предназначен для хранения и отображения как правило статичной картинки.
DVM (2009-02-27 12:03:00) [5]
> Ну OnPaint немного неподходит, ибо он не даёт тот участок
> чтом не нужно перерисовать
Да неужели? Есть такое понятие как область отсечения, так вот что выходит за ее пределы не перерисовывается.
brother (2009-02-27 10:38:00) [6]для эксперимента:
кинь два Timage рядом друг с другом и button,
во 2 Timage загрузи картинку (желательно не меньше 640х480),
на кнопку такой код:
image1.Picture.Bitmap.Canvas.Draw(0,0, image2.Picture.Bitmap );
form1.Canvas.Draw(0,0, image2.Picture.Bitmap);
анализируй увиденное...
brother (2009-02-27 10:34:00) [7]и странно, но image1.Picture нет Canvas
он есть у image1.Picture.Bitmap.Canvas.Draw...
в общем с такими исходными данными (=0) - шоибка в 17 строке
brother (2009-02-27 10:29:00) [8]Timage в runtime создается?
sco (2009-02-26 23:19:00) [9][quote]Она то беспокоиться и вызывает событие OnPaint, куда и надо вешать свой обработчик для отрисовки.[/quote]
Ну OnPaint немного неподходит, ибо он не даёт тот участок чтом не нужно перерисовать, и всю ответственность за отображение переносит на мои плечи...
Есть какие нибудь предположения почему имаги дохнут?
Pavia (2009-02-26 22:44:00) [10]
> асколько я понимаю если я использую канву от формы то она
> не беспокоится о своей отрисовке,
Она то беспокоиться и вызывает событие OnPaint, куда и надо вешать свой обработчик для отрисовки.