1

我正在使用两个位图在它们上绘制图形。绘制后,我需要在两个图像中显示位图图片。将位图分配给 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 也总是正确的。

谁能告诉我,我做错了什么?

4

1 回答 1

1

过了一会儿,我意识到,我保存的位图和图像并不完全正确。如果我看不到图片,它没有完全绘制。没有错误,它是随机发生的,但我发现,一旦程序开始忽略我的绘图命令,它直到函数结束才绘制任何东西,该函数执行绘图。所以 - 为了检查,如果我仍然可以绘制,在将位图分配给 Image 之前,我这样做了:

            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;

这意味着 - 我将一个像素更改为红色,然后打印在文本上,这应该使更改后的像素变为白色。基于此,我检查了颜色是否改变(能够改变像素颜色和打印​​文本)。

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

于 2012-08-23T10:23:17.707 回答