2012-08-21 4 views
1

Я использую два растровых изображения для рисования графиков на них. После рисования мне нужно показать растровые изображения в двух изображениях. Присвоение растрового изображения к растровому изображению изображения или рисунка к изображению иногда приводит к исчезновению изображения (вы можете видеть фон формы). Я попытался это:Изменение растрового изображения изображения или рисования растрового изображения на изображении приводит к исчезновению изображения

Image->Picture->Bitmap->Assign(bitmap1); 
    Image2->Picture->Bitmap->Assign(bitmap2); 


    Image->Picture->Graphic = bitmap1;.... 


    Image->Canvas->Draw(0,0,bitmap1);.... 


    Image->Picture->Bitmap->Canvas->Draw(0,0,bitmap1); 

Если у меня нет Sleep (100) между изображением и IMAGE2 перерисовки Image2 не видна большую часть времени. Также добавление Image2-> Refresh помогает, но проблема все же иногда возникает для обоих изображений.

Если я сохранил созданные растровые изображения или изображения в файлах .jpeg, все изображения .jpeg верны, и ни один из них не пуст. Также всегда правильны значения Image-> height, Image-> picture-> bitmap-> height и width.

Может ли кто-нибудь сказать мне, что я делаю неправильно?

+0

В итоге я использовал одно изображение и одно растровое изображение, что значительно увеличило вероятность того, что изображение не исчезнет. Есть ли вероятность, что это может быть вызвано количеством данных, которые нужно нарисовать? Как в http://stackoverflow.com/questions/10168792/image-is-disappearing-with-rotation-in-osg ответ? – user1613991

ответ

1

Через некоторое время я понял, что растровые изображения и изображения, которые я сохранил, были не совсем правильными. Если я не смог увидеть картину, она не была полностью нарисована. Ошибок не было, это произошло случайным образом, но я узнал, что когда программа начала игнорировать мои команды рисования, она ничего не рисовала до конца функции, которая делает рисование. Так что - проверить, смогу ли я по-прежнему рисовать, перед назначением растрового изображения, я сделал это:

  Image3->Canvas->Pixels[y][0] = clRed; 
      TColor test = Image3->Canvas->Pixels[y][0]; 

      Image3->Canvas->TextOut(y, 0, Device1->name); 

      TColor test2 = Image3->Canvas->Pixels[y][0]; 

      if(test == test2) 
      { 
        imageUpdated = false; 
        delete Image3; 
        return; 
      } 

      Image->Picture->Graphic = Image3; 
      imageUpdated = true; 

Это значит - я изменил один пиксель красный, а после этого отпечатанной над текстом, который должен сделать что изменилось пиксель белый. На основании этого я проверил, изменился ли цвет (смог изменить цвет пикселя и напечатать текст).

Я действительно не знаю причины, почему она иногда начинает игнорировать команды рисования, но я надеюсь, что если кто-то столкнется с тем же вопросом, что и я, этот ответ может помочь ему/ей.

Смежные вопросы