- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Win32APIで作成したDLLをC#.NETで使用した時のDLL内の関数の動作について)
DLL内の関数の動作について
このQ&Aのポイント
- Win32APIで作成したDLLをC#.NETで使用した時のDLL内の関数の動作について調査しています。
- 具体的には、「ビットマップ形状に合わせてリージョンを作成する」CreateRgnFromBitmap関数について問題が発生しています。
- DLL自体はC#.NETでも呼び出せるが、関数の動作が正常に行われないため、原因を調査しています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 C#.NETのBitmapクラスで読み込んだビットマップにアルファチャンネルが付加されているからではないでしょうか。 for (int x = 0; x < bm.bmWidth; x++){ if ((pScanData[x] & 0xffffff) != dwTransColor){ // 透明色でなければ として見ては如何でしょうか。 後、RとBの関係が逆転している事も考えられます。 for (int x = 0; x < bm.bmWidth; x++){ COLORREF color = pScanData[x] & 0xffffff; BYTE R = GetRValue(color); BYTE G = GetGValue(color); BYTE B = GetBValue(color); color = RGB(B, G, R);//此処でRとBを逆転させる if(color != dwTransColor){ 見たいにすれば逆転出来ると思います。 取り合えず、真赤に塗り潰したビットマップを読み込ませて、pScanData[x]の値を確認みるのが手っ取り早いと思います。
お礼
ご教授誠にありがとうございました。 おかげさまで問題を解決する事ができました。 原因はご回答頂いた「C#.NETのBitmapクラスで読み込んだビットマップにアルファチャンネルが付加されているから」という事でした。 アルファチャンネルを無視するようにすればうまくいきました。 本当にありがとうございました。 またご教授よろしくお願いいたします。