- PR -

アイコンのロードについて

1
投稿者投稿内容
Hidering
常連さん
会議室デビュー日: 2007/05/22
投稿数: 33
投稿日時: 2007-06-08 16:18
お世話になります。

24bitアイコンを以下のようにロードすると、エラーが出てしまいます。

Dim bmpIcon As Bitmap
bmpIcon = New Bitmap(strFname)

32bitアイコンやパレット付きアイコンは上記プログラムで正常にロードされるのですが、
なぜか24bitアイコンの場合のみ
『使用されたパラメータが有効ではありません。』
というエラーが出てしまいます。

どのようにすれば正常に24bitアイコンもロードすることができるのでしょうか?
24bitアイコンに限らず、全てのアイコンがロードでき、
パレット情報や色情報を取得できる方法をご教授ください。

よろしくお願いします。
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-06-11 09:42
引用:

24bitアイコンに限らず、全てのアイコンがロードでき、
パレット情報や色情報を取得できる方法をご教授ください。



そんな方法はありません。

24bitのアイコンが読めないのは透過色の問題です。
アイコンは透過処理が必要なので
透過チャンネルのある32bitアイコンはそのままBMPにできますが、
透過チャンネルの無い24bitアイコンをBMPによむと情報が失われます。

以下のコードで24bitアイコンが読めますが、
読み込んだ結果は32bitのアルファつきBMPになります。

色情報などがほしいのでしたら
自分で実装するのがいいでしょう。

コード:
Using ico As Icon = New Icon(filename)
    bmp = ico.ToBitmap()
End Using


Hidering
常連さん
会議室デビュー日: 2007/05/22
投稿数: 33
投稿日時: 2007-06-21 04:57
そうですか。ファイルを読み込むところから
自分で実装するしかないようですね。

そうなるとWindows Vista対応の256x256(png圧縮)のアイコンのロードも
自分で実装しなければならなくなります。
png圧縮されたアイコンのヘッダー情報が通常のものと違うようですが、
MSのサイトには掲載されていませんでした。
ヘッダー情報が掲載されているサイト・文献等、ご存知の方がいたら教えてください。

追記
れいさんありがとうございました。

[ メッセージ編集済み 編集者: Hidering 編集日時 2007-07-03 14:48 ]
1

スキルアップ/キャリアアップ(JOB@IT)