GDI+で色々な形式の画像を表示

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
ShellExecute

GDI+で色々な形式の画像を表示

#1 投稿記事 by ShellExecute »

http://www31.ocn.ne.jp/~heropa/vb42.htm
↑のページのコードをABに移植すればimgctl.dllなどの外部DLLなしでPNGやJPGを読めるんじゃないか、と思ってコードを作ってみました。

しかし、私VBに一度も触れたことが無いので上手くできていないのか、何も表示されません。

どなたか間違いの指摘をお願いします。

以下に私のコードを載せておきます。ややこしいのでエラーメッセージ取得の部分は省いてありますが
DEBUG_A、DEBUG_Bの箇所で調べるとどちらも
「指定されたファイルが見つかりません」
とでてきます。

ファイルパスの部分は相対パス絶対パスともに試しました。

画像は手元にあったpng、jpg、bmpで試しました。
hira
記事: 203
登録日時: 2005年5月31日(火) 20:14
お住まい: 兵庫県
連絡する:

Re: GDI+で色々な形式の画像を表示

#2 投稿記事 by hira »

ここのフォーラムも超久しぶりです。

GDI+のファイル名指定はUnicodeでやらないとだめなようです。
MultiByteToWideChar(CP_ACP, ...) で Shift-JIS → Unicode の変換ができます。
ShellExecute

ありがとうございます!

#3 投稿記事 by ShellExecute »

気がついたら返信頂いていました。

hiraさん、本当にありがとうございます!

ご指摘の通りコードを改良し、さらに別サイトの情報も参考にしたところ、GDI+で画像の読み書きができるようになりました。

といってもGDI+を理解したわけではないので、今のところ

・GIF、PNG、JPG、BMPなどの読み込み
・JPGの出力(品質指定可能)
・PNGの出力(詳細設定不可)

しかできません。

でもPNGを扱えるのでゲームを作る際に容量を削減できるようになりました。

↓読み込み ↓保存 ・Function GDIPLoadPicture(FilePath As BytePtr) As HBITMAP
画像を読み込み
FilePath…ファイルパス
戻り値…ビットマップハンドル

・GDIPSavePNG(FilePath As BytePtr,hBmp As HBITMAP)
PNGを保存(上書き)
FilePath…保存先ファイルパス
hBmp…ビットマップハンドル

・GDIPSavePNG(FilePath As BytePtr,hBmp As HBITMAP,Quality As Long)
PNGを保存(上書き)
FilePath…保存先ファイルパス
hBmp…ビットマップハンドル
Quality…品質(0~100?)

↓使用例 参考
http://www31.ocn.ne.jp/~heropa/vb42.htm
http://hpcgi1.nifty.com/MADIA/VBBBS2/ww ... 080012.txt
ShellExecute

#4 投稿記事 by ShellExecute »

連続ですみません

上記コードの説明3個目
・GDIPSavePNG(FilePath As BytePtr,hBmp As HBITMAP,Quality As Long)
PNを保存

とありますが、正しくは
・GDIPSaveJPG(FilePath As BytePtr,hBmp As HBITMAP,Quality As Long)
JOGを保存

です。失礼しました。
返信する