ab.com コミュニティ
https://www.activebasic.com/forum/

GDI+で色々な形式の画像を表示
https://www.activebasic.com/forum/viewtopic.php?t=3627
ページ 11

作成者:  ShellExecute [ 2012年12月10日(月) 13:01 ]
記事の件名:  GDI+で色々な形式の画像を表示

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

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

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

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

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

画像は手元にあったpng、jpg、bmpで試しました。

作成者:  hira [ 2013年1月14日(月) 01:18 ]
記事の件名:  Re: GDI+で色々な形式の画像を表示

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

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

作成者:  ShellExecute [ 2013年1月16日(水) 18:50 ]
記事の件名:  ありがとうございます!

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

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 [ 2013年1月16日(水) 18:55 ]
記事の件名: 

連続ですみません

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

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

です。失礼しました。

ページ 11 全ての表示時間は UTC+09:00 です
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/