Конференция "Media" » TImage=>Canvas и отрисовка [D7, WinXP]
 
  • Faiwer © (26.02.09 21:58) [0]
    Удалено модератором
    Примечание: http://www.delphimaster.ru/forums.shtml#rule Запрещается: п.7
  • Pavia © (26.02.09 22:44) [1]

    > асколько я понимаю если я использую канву от формы то она
    > не беспокоится о своей отрисовке,

    Она то беспокоиться и вызывает событие OnPaint, куда и надо вешать свой обработчик для отрисовки.
  • sco (26.02.09 23:19) [2]
    [quote]Она то беспокоиться и вызывает событие OnPaint, куда и надо вешать свой обработчик для отрисовки.[/quote]
    Ну OnPaint немного неподходит, ибо он не даёт тот участок чтом не нужно перерисовать, и всю ответственность за отображение переносит на мои плечи...
    Есть какие нибудь предположения почему имаги дохнут?
  • brother © (27.02.09 10:29) [3]
    Timage в runtime создается?
  • brother © (27.02.09 10:34) [4]
    и странно, но image1.Picture нет Canvas
    он есть у image1.Picture.Bitmap.Canvas.Draw...
    в общем с такими исходными данными (=0) - шоибка в 17 строке
  • brother © (27.02.09 10:38) [5]
    для эксперимента:
    кинь два Timage рядом друг с другом и button,
    во 2 Timage загрузи картинку (желательно не меньше 640х480),
    на кнопку такой код:
    image1.Picture.Bitmap.Canvas.Draw(0,0, image2.Picture.Bitmap );
    form1.Canvas.Draw(0,0, image2.Picture.Bitmap);
    анализируй увиденное...
  • DVM © (27.02.09 12:03) [6]

    > Ну OnPaint немного неподходит, ибо он не даёт тот участок
    > чтом не нужно перерисовать

    Да неужели? Есть такое понятие как область отсечения, так вот что выходит за ее пределы не перерисовывается.
  • DVM © (27.02.09 12:05) [7]

    > Есть какие нибудь предположения почему имаги дохнут?

    Потому что ты неправильно используешь TImage.

    Он вообще НЕ ПРЕДНАЗНАЧЕН для рисования. Для рисования предназначен PaintBox как и следует из его названия, а TImage предназначен для хранения и отображения как правило статичной картинки.
  • DVM © (27.02.09 12:08) [8]
    Вообще, всю твою картинку с кораблями и прочее надо держать в промежуточном TBitmap и обновлять там же, когда есть необходимость. В OnPaint PaintBox-а выводить все это на канву последнего. GDI сама разберется какую часть перерисовывать и  т.д. сделает все оптимальным образом.
  • sco (27.02.09 13:55) [9]
    >> 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, пойду рыть инфу =)
  • sco (27.02.09 14:16) [10]
    >> для эксперимента:
    >> кинь два 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 не сбалансированная процедура?
 
Конференция "Media" » TImage=>Canvas и отрисовка [D7, WinXP]
Есть новые Нет новых   [134431   +11][b:0][p:0]