Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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, куда и надо вешать свой обработчик для отрисовки.


Наверх

Титульная страница Поиск, карта сайта Написать письмо