-
Удалено модератором Примечание: http://www.delphimaster.ru/forums.shtml#rule Запрещается: п.7
-
> асколько я понимаю если я использую канву от формы то она > не беспокоится о своей отрисовке,
Она то беспокоиться и вызывает событие OnPaint, куда и надо вешать свой обработчик для отрисовки.
-
[quote]Она то беспокоиться и вызывает событие OnPaint, куда и надо вешать свой обработчик для отрисовки.[/quote] Ну OnPaint немного неподходит, ибо он не даёт тот участок чтом не нужно перерисовать, и всю ответственность за отображение переносит на мои плечи... Есть какие нибудь предположения почему имаги дохнут?
-
Timage в runtime создается?
-
и странно, но image1.Picture нет Canvas он есть у image1.Picture.Bitmap.Canvas.Draw... в общем с такими исходными данными (=0) - шоибка в 17 строке
-
для эксперимента: кинь два Timage рядом друг с другом и button, во 2 Timage загрузи картинку (желательно не меньше 640х480), на кнопку такой код: image1.Picture.Bitmap.Canvas.Draw(0,0, image2.Picture.Bitmap ); form1.Canvas.Draw(0,0, image2.Picture.Bitmap); анализируй увиденное...
-
> Ну OnPaint немного неподходит, ибо он не даёт тот участок > чтом не нужно перерисовать
Да неужели? Есть такое понятие как область отсечения, так вот что выходит за ее пределы не перерисовывается.
-
> Есть какие нибудь предположения почему имаги дохнут?
Потому что ты неправильно используешь TImage.
Он вообще НЕ ПРЕДНАЗНАЧЕН для рисования. Для рисования предназначен PaintBox как и следует из его названия, а TImage предназначен для хранения и отображения как правило статичной картинки.
-
Вообще, всю твою картинку с кораблями и прочее надо держать в промежуточном TBitmap и обновлять там же, когда есть необходимость. В OnPaint PaintBox-а выводить все это на канву последнего. GDI сама разберется какую часть перерисовывать и т.д. сделает все оптимальным образом.
-
>> 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, пойду рыть инфу =)
-
>> для эксперимента: >> кинь два 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 не сбалансированная процедура?
|