我正在使用两个位图在其上绘制图形。绘制后我需要在两个图像中显示位图图片。将位图分配给 Image 或将位图绘制到 Image 有时会导致 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);
如果我在 Image 和 Image2 重绘之间没有 Sleep(100),则 Image2 大部分时间都不可见。添加 Image2->Refresh 也有帮助,但问题有时仍然会出现在两个图像上。
如果我将创建的位图或图像保存到 .jpeg 文件,所有 .jpeg 图像都是正确的,并且没有一个是空的。还有Image->height, Image->picture->bitmap->height and width 总是正确的。
谁能告诉我,我做错了什么?
最佳答案
过了一会儿我意识到,我保存的位图和图像并不都是正确的。如果我看不到图片,则说明它没有完全绘制。没有错误,它是随机发生的,但我发现,一旦程序开始忽略我的绘图命令,它就不会绘制任何东西,直到函数结束才开始绘图。 所以 - 在将位图分配给图像之前检查我是否仍然可以绘制,我这样做了:
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;
这意味着 - 我将一个像素更改为红色,然后在文本上打印,这应该使更改后的像素变为白色。基于此,我检查了颜色是否改变(能够改变像素颜色和打印文本)。
我真的不知道为什么它有时会开始忽略绘图命令,但我希望,如果有人遇到与我相同的问题,这个答案可能会对他/她有所帮助。
关于c++ - 更改图像位图或在图像上绘制位图会导致图像消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12053804/