C++ 更改图像位图或在图像上绘制位图会导致图像消失

C++ 更改图像位图或在图像上绘制位图会导致图像消失,c++,image,bitmap,c++builder,C++,Image,Bitmap,C++builder,我正在使用两个位图在它们上面绘制图形。绘图后,我需要在两个图像显示位图图片。为图像指定位图或为图像绘制位图有时会导致图像消失(您可以看到表单背景)。 我试过这个: Image->Picture->Bitmap->Assign(bitmap1); Image2->Picture->Bitmap->Assign(bitmap2); Image->Picture->Graphic = bitmap1;.... Image-

我正在使用两个位图在它们上面绘制图形。绘图后,我需要在两个图像显示位图图片。为图像指定位图或为图像绘制位图有时会导致图像消失(您可以看到表单背景)。 我试过这个:

   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);
如果我在重绘图像和图像2之间没有睡眠(100),则图像2在大部分时间内不可见。另外,添加Image2->Refresh也会有所帮助,但有时这两个图像都会出现问题

如果将创建的位图或图像保存到.jpeg文件中,则所有.jpeg图像都是正确的,并且没有一个是空的。另外,图像->高度、图像->图片->位图->高度和宽度始终正确


有人能告诉我,我做错了什么吗?

过了一会儿,我意识到,我保存的位图和图像并不都是正确的。若我看不见这幅画,那个么它并没有画好。并没有错误,它是随机发生的,但我发现,一旦程序开始忽略我的绘图命令,它就不会绘制任何东西,直到函数结束,它才开始绘制。 所以-为了检查,在将位图指定给图像之前,我是否仍然可以绘制,我执行了以下操作:

            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;
这意味着-我改变了一个像素的红色,然后在文本上打印,这应该使改变后的像素变成白色。基于这一点,我检查,如果颜色改变(能够改变像素颜色和打印文本)


我真的不知道为什么它有时会忽略绘图命令,但我希望,如果有人遇到与我相同的问题,这个答案可能会对他/她有所帮助。

过了一会儿,我意识到,我保存的位图和图像并不都是正确的。若我看不见这幅画,那个么它并没有画好。并没有错误,它是随机发生的,但我发现,一旦程序开始忽略我的绘图命令,它就不会绘制任何东西,直到函数结束,它才开始绘制。 所以-为了检查,在将位图指定给图像之前,我是否仍然可以绘制,我执行了以下操作:

            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;
这意味着-我改变了一个像素的红色,然后在文本上打印,这应该使改变后的像素变成白色。基于这一点,我检查,如果颜色改变(能够改变像素颜色和打印文本)


我真的不知道为什么它有时会忽略绘图命令,但我希望,如果有人遇到与我相同的问题,这个答案可能会对他/她有所帮助。

我最终使用了一个图像和一个位图,这大大增加了可能性,该图像不会消失。是否有可能是由于需要绘制的数据量造成的?作为回答?我最终使用了一个图像和一个位图,这大大增加了图像不会消失的可能性。是否有可能是由于需要绘制的数据量造成的?作为回答?