プログラムを始めたところの初心者です。
画像を透過し、ウインドウに表示させたいので、いろいろ探してみたところ、
マスクを自動で作成すると言う物があったので、参考にさせてもらいました。
さらに、その中に、『同じように透過済み画像を作れる』とあったので、いろいろ試したのですが、ダメでした・・・
よろしければ、やり方を教えていただけないでしょうか。
http://oshiete1.goo.ne.jp/qa5254128.html
上を参考にさせていただきました
Dim hDC as HDC, hTemp As HDC, hDest as HDC,hOriDC As HDC
Dim hBmpTemp as HBITMAP, dummy(3) as HBITMAP,hOriBmp As HBITMAP
Dim bmp as BITMAP
Dim hMemDC As HDC,hMemBmp As HBITMAP
hDC=GetDC(NULL)
hTemp=CreateCompatibleDC(hDC)
hDest=CreateCompatibleDC(hDC)
hOriDC=CreateCompatibleDC(hDC)
hMemDC=CreateCompatibleDC(hDC)
ReleaseDC(NULL,hDC)
' 元画像の情報の取得
GetObject(hBmp,Len(bmp),bmp)
' モノクロBITMAPの生成
hBmpTemp=CreateCompatibleBitmap(hDest,bmp.bmWidth,bmp.bmHeight)
hOriBmp=CreateCompatibleBitmap(hOriDC,bmp.bmWidth,bmp.bmHeight)
hMemBmp=hBmp
dummy(0)=SelectObject(hTemp,hBmp)
dummy(1)=SelectObject(hDest,hBmpTemp)
dummy(2)=SelectObject(hOriDC,hOriBmp)
dummy(3)=SelectObject(hMemDC,hMemBmp)
SetBkColor(hTemp,GetPixel(hTemp,0,0))
' 背景マスクの生成
BitBlt(hDest,0,0,bmp.bmWidth,bmp.bmHeight,hTemp,0,0,SRCCOPY)
'スプライト
BitBlt(hOriDC,0,0,bmp.bmWidth,bmp.bmHeight,hDest,0,0,NOTSRCCOPY)
BitBlt(hOriDC,0,0,bmp.bmWidth,bmp.bmHeight,hTemp,0,0,SRCAND)
'透過
BitBlt(hMemDC,0,0,bmp.bmWidth,bmp.bmHeight,hDest,0,0,SRCAND)
BitBlt(hMemDC,0,0,bmp.bmWidth,bmp.bmHeight,hOriDC,0,0,SRCPAINT)
' HBITMAPの切り離し
SelectObject(hTemp,dummy(0))
SelectObject(hDest,dummy(1))
SelectObject(hOriDC,dummy(2))
SelectObject(hMemDC,dummy(2))
' HDCの後始末
DeleteDC(hTemp)
DeleteDC(hDest)
DeleteDC(hOriDC)
DeleteDC(hMemDC)
' 呼び出し元への返り値
MakeMaskWith=hMemBmp
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
参照先のURLの回答者です
どこまでが希望通りに動作していて、どこからが希望通りでないのかを明確にしてみましょう
元画像や モノクロマスク、スプライトなどを行ったものを
フォームの特定の位置に描画してその画像を 貼り付けてみましょう
画像の大きさは制限をされていますので アップロード出来るファイルの大きさに加工する必要があります
ALT+PrintScrnで フォームの画像のみをクリップボードに転送して
Windows付属のペイントなどに貼り付けて JPGなどで保存
この際に 必要な部分のみを切り取るとか クオリティを下げるなどして
ファイルの大きさを加減してください GIMPやPhotoShopなどで加工するとかです
アップロードしてみてください
hOriDCに選択されたのがモノクロビットマップなので
背景以外の部分が白くなっているだけの画像のように思います
hOrgBmpを CreateBitmapでカラービットマップで作る必要がありそうですが ・・・
また hMemBmpにこのルーチンに飛んできた際の引数などのhBmpを代入している点もうまくないと思います
hMembmpも CreateBitmapで生成したほうがいいと思いますよ
同じGDIオブジェクトを別のDCに選択して別々の操作をするのはバグの基です
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- その他(プログラミング・Web制作) uwscとWinShotを使いスクリーンショットを撮る 1 2022/06/30 21:15
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- 英語 Thus, PTH may be used to promote bone regeneration 1 2022/07/26 08:15
- Excel(エクセル) マクロで行を追加、削除すると行位置がずれますが、解決方法はありませんか?。 5 2022/05/28 16:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Pythonでgif画像が上手く作れない
-
生成AI画像について
-
HTMLでサイトの模写をしていま...
-
Excel ユーザーフォームで表示...
-
VBA シート毎に画像挿入
-
【EXCEL VBA】ダブルクリックで...
-
UWCSでのランダムクリック入力...
-
MATLABのDICOM画像表示
-
UWSCでループ処理がうまくいき...
-
UWSCを使った画像認証マク...
-
Excelで画像クリックのアテンシ...
-
gif 画像上の ボタンに リン...
-
自作の地図をグーグルマップの...
-
パネルに画像
-
Pythonのプログラム初心者の問題
-
JavaScriptでゲームプログラミ...
-
「using Windows」でエラーが出る
-
jpgファイルの内容を比較したい...
-
uwscの画像認識に失敗します。
-
C#で画像を他の画像に貼り付け...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【EXCEL VBA】ダブルクリックで...
-
こんなことてしますか??
-
Pythonでgif画像が上手く作れない
-
Excel ユーザーフォームで表示...
-
VBA シート毎に画像挿入
-
生成AI画像について
-
EXCEL VBA 複数のImageコントロ...
-
HTMLで画像をポップアップで表...
-
UWSCの色判定
-
UWSC 画像判定と条件分岐について
-
jQuery . プログラミング 助け...
-
VBAのユーザーフォームのイメー...
-
jqueryスライダーを2段でスライ...
-
vb.net 画像の透過について
-
【WPF】画像の切り替え
-
背景画像の繰り返しについて
-
「using Windows」でエラーが出る
-
画像処理したBitmapをピクチャ...
-
スマホでサイトの画像を長押し→...
-
UWSC 画像認識で条件分岐
おすすめ情報