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

标签 c++ image bitmap c++builder

我正在使用两个位图在其上绘制图形。绘制后我需要在两个图像中显示位图图片。将位图分配给 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/

相关文章:

c++ - 多个数字范围的排列

c++ - 没有命名类型错误 C++

c - 使用位图跟踪数组

c++ - 在 C++ 中与 Repeater 中的委托(delegate) QML 组件交互

c++ - 用于 C/C++ 的小型开源 Unicode 库

html - Firefox 中的 SVG 破解(渲染不清晰)

jquery - 检查 jquery(js) 中的字段是否为空?

Android:高质量的图像大小调整/缩放

android - 如何为位图添加外发光?

android - java.lang.OutOfMemoryError on line httpPost.setEntity(new UrlEncodedFormEntity(params)) 在 android 中以字符串格式发送图像时