指定された形式のビットマップだけを描画するのは難しいことではありませんが、そのコードが機能しない理由を理解できません(いくつかのデルファイの例で見ました):
Graphics::TBitmap* bmp;
void __fastcall TForm1::FormCreate(TObject* Sender)
{
bmp = new Graphics::TBitmap();
bmp->Width = 300;
bmp->Height = 300;
bmp->Canvas->Ellipse(0, 0, 300, 300);
}
void __fastcall TForm1::Button1Click(TObject* Sender)
{
HRGN rgn = CreateRectRgn(10, 10, 30, 30);
if(SelectClipRgn(bmp->Handle, rgn) == ERROR) ShowMessage("Error");
Canvas->Draw(0, 0, bmp);
}
したがって、ビットマップは通常の方法で描画されます。MSDNでは、ERRORフラグは「以前のクリッピング領域は影響を受けません」と説明されています。デバイスを最初に構成する必要がありますか、それとも前のリージョンを削除する必要がありますか?このタスクを実行するのは正しい方法ですか。このビットマップを含むTImageでSetWindowRgnを使用しますが、TImageはウィンドウではないため、Handleがありません。何が悪いのかを見つけるのを手伝ってください。