BMPファイル表示で透過色を

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
yama
記事: 58
登録日時: 2005年5月31日(火) 21:11
お住まい: 新潟市
連絡する:

BMPファイル表示で透過色を

#1 投稿記事 by yama »

BMPファイル表示で透過色を使用できますか?
過去ログを参考にBMPを表示させるとき周囲の色を透過させるべく

コード: 全て選択

hResBmp=LoadImage(GetModuleHandle(0),"test.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE or LR_LOADTRANSPARENT)
などとしましたがBMPの左上端の色を指定して透過するという事がうまく行きません。
表示自体は成功しており LR_MONOCHROMEなどのパラメーターは
成功しているので入れ方はあっていると思うのですが・・

ちょっとプログラムをおしゃれにしようと文字をBMPで作成しましたが
デスクトップの画像のプロパティでデザインや配色を変更するとプログラム
ウインドウの色も替わってしまう事に気づきました。

そもそもXPなのにWINDOWSクラシック表示にしている自分に合わせて
作ってしまったためなのですが。

ちなみにWINDOWSクラシック表示に合わせて大きさを調整してしまうと
XP表示に下とき縦方向がつまってしまいますね。
ノッチ
記事: 82
登録日時: 2005年6月01日(水) 23:27
お住まい: 北海道札幌市

Re: BMPファイル表示で透過色を

#2 投稿記事 by ノッチ »

>

コード: 全て選択

hResBmp=LoadImage(GetModuleHandle(0),"test.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE or LR_LOADTRANSPARENT)
>
> などとしましたがBMPの左上端の色を指定して透過するという事がうまく行きません。

たしかLR_LOADTRANSPARENTは256色までのビットマップでないと透過できなかった
記憶があります。
ビットマップを256色に変更すれば解決すると思います。
yama
記事: 58
登録日時: 2005年5月31日(火) 21:11
お住まい: 新潟市
連絡する:

Re: BMPファイル表示で透過色を

#3 投稿記事 by yama »

メッセージ感謝です

> たしかLR_LOADTRANSPARENTは256色までのビットマップでないと透過できなかった
> 記憶があります。
> ビットマップを256色に変更すれば解決すると思います。

8ビット256色に変更してみましたが透過はできませんでした。
ファイルからの他リソースに読み込ませてみても同様でした。
前後に問題ありか?Paintイベント内に以下のコードをかきました。
半ばあきらめモードです
ノッチ
記事: 82
登録日時: 2005年6月01日(水) 23:27
お住まい: 北海道札幌市

Re: BMPファイル表示で透過色を

#4 投稿記事 by ノッチ »

> LR_LOADTRANSPARENT を指定してLoadImageを呼び出すと
最初の1ピクセルと同じ色をCOLOR_WINDOWという色に変更します。
この色はABのウィンドウの背景色とは違う色なので透過ではなく見えます。
ウィンドウの背景色(COLOR_3DFACE)と同じ色にするには、
hResBmp=LoadImage(GetModuleHandle(0),"test.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE or LR_LOADTRANSPARENT or LR_LOADMAP3DCOLORS)
のようにするとできます。
yama
記事: 58
登録日時: 2005年5月31日(火) 21:11
お住まい: 新潟市
連絡する:

Re: BMPファイル表示で透過色を

#5 投稿記事 by yama »

> LR_LOADTRANSPARENT を指定してLoadImageを呼び出すと
> 最初の1ピクセルと同じ色をCOLOR_WINDOWという色に変更します。
> この色はABのウィンドウの背景色とは違う色なので透過ではなく見えます。
> ウィンドウの背景色(COLOR_3DFACE)と同じ色にするには、
>
> [quote]hResBmp=LoadImage(GetModuleHandle(0),"test.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE or LR_LOADTRANSPARENT or LR_LOADMAP3DCOLORS)[/quote]
>
> のようにするとできます。

教えて頂いたようにすると透過OKとなりました。すばやいRESありがとうございます
ウィンドウの背景色(COLOR_3DFACE)はWINDOWSが管理している色のようで
デスクトップのデザインの変化に応じて透過?してくれました。当面の目標はクリア
できそうです。

ちなみにImegeBoxコントロールを使用したときも透過できるのでしょうか?
返信する