1

2 つのビットマップを使用してグラフを描画しています。描画後、ビットマップ画像を 2 つの画像で表示する必要があります。ビットマップをイメージに割り当てたり、ビットマップをイメージに描画すると、イメージが消えることがあります (フォームの背景が表示されます)。私はこれを試しました:

   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 と width は常に正しいです。

私が間違っていることを誰か教えてもらえますか?

4

1 に答える 1

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;

つまり、1 ピクセルの赤を変更した後、テキストの上に印刷したため、変更されたピクセルが白になるはずです。それに基づいて、色が変更されたかどうかを確認しました(ピクセルの色を変更してテキストを印刷できました)。

描画コマンドを無視し始める理由は本当にわかりませんが、誰かが私と同じ問題に遭遇した場合、この回答が彼/彼女に役立つことを願っています.

于 2012-08-23T10:23:17.707 に答える