0

アプリケーションで透過性を作成しようとしています。たとえば、私のアプリのウィンドウは正方形で、ウィンドウの一部を非表示にして丸くしたいと考えています。

私のコードは次のようになります。

HDC hdcMask = nullptr;
HBITMAP hBMP = (HBITMAP)LoadImageW(nullptr, L"C:\\mask.bmp", IMAGE_BITMAP, 150, 160, LR_LOADFROMFILE);
SelectObject(hdcMask, hBMP);
HWND hWnd = GetActiveWindow();
HDC hdcWindow = GetDC(hWnd);

TransparentBlt(hdcWindow, 0, 0, 150, 160, hdcWindow, 0, 0, 150, 160, RGB(0,0,0));

mask.bmp はビットマップで、白は透明にしたいもの、黒は可視にしたいものです。

このコードを適用した後、何も起こりません。私は何を間違っていますか?目的の結果を得る別の方法はありますか?

注: Windows XP OS 以降で動作するには、このコードが必要です。

4

2 に答える 2

1

ウィンドウを透明または半透明にする方法はいくつかあります。

SetWindowRgnは、ウィンドウの一部を透明にします。

SetLayeredWindowAttributesは、ウィンドウの一部を透明にすることができ、ウィンドウの残りの部分全体に透明性を適用することもできます。

UpdateLayeredWindowは、個々のウィンドウに異なる量の半透明度を与えることができます。

于 2013-02-08T10:52:55.753 に答える
0

アルファデータも含めることができるbmpとは異なる形式を使用してみませんか?

PixelFormat32bppPARGBビットマップを使用し、Bitmap ::LockBitsビットマップ::Unlockbitsを使用して、ファイルの形式を維持し、アルファ設定が上書きされないようにすることができます。

于 2013-02-08T10:06:58.373 に答える