Top > Programmingとか > VB / VB.NET > GDI+ in VB6

01 調べてみました

さいばざる(30) GIFにおいて、

…VB.NETはGIF変換の機能を最初から持っているんでした…(T-T)

と書いたところ、K.J.Kさんから

あれは.NETの機能ではなく、GDI+の機能です。

とツッコみをいただきましたありがとうございますGDI+ってなんですかわかりません(T-T)。



てことで調べてみましたGDI+。

このへん、どぅもぴしっとわかりやすく説明してくれている資料が見あたりません。
わかった分を列挙してみると、

  • 従来の描画制御機能であるGDIと完全に置き換わる、新しい描画制御機能であること。

  • Jpeg、Gif、Png等の圧縮画像データを取り扱えること、アルファブレンド(不完全透過)をサポートしていること。

  • 対応しているOSはWin98/SE/ME、NT/2000/XP。
    ただしWinXPでは標準で搭載されているが、他OSでは別途DLLを用意する必要があること。

  • DLL名はGdiPlus.dll。MicrosoftサイトのPlatform SDK Redistributable: GDI+ RTMのページから入手できること。
    また、GdiPlus.dllは自作Pgに同梱して再配布することが可能であること。
って感じでしょうか。

試しに上記URLから実際にGdiPlus.dllをDLしてみると、自動展開CABファイルで1,097,832Bytes、展開してみると出てくるのが自動展開ZIPファイルで1,026,440Bytes、さらにこれを展開するとドキュメントファイルと共に現れたGdiPlus.dllが1,706,800Bytes。でかっ。
自作Pgと一緒に配布する想定で、これまた試しにLZH(lh5)で圧縮してみると987,296Bytesに。
…いゃぁでかっ。このへんはちょっとやりにくいかもしれませんね。

でもまぁ各種形式の画像をそのまま使えるのは、プログラマ側のメリットとしてはむちゃくちゃでかいです。
ので、使えるかどぅか調べてみることにしましょう。



過日お話ししたよぅに、言語仕様としてさくっと使えるようになっているのはVS.netにおいてのみです。
本コンテンツではやはりVB6で何とかしたいと思いますので、例のごとく各APIをDeclareで宣言してひとつずつCallしていくか、と。

となると、GDI+のAPI関数なんかVB6のAPIビューアに入っているわけがありませんから、やはりSDKに格納されているVC++用のヘッダファイルを参照してDeclare宣言文を書き上げていくのがスタンダードな手法でしょう。

GDI+ API関数の宣言が書かれているヘッダファイルは、GdiPlus.hを始めとするGdi*.h 30ファイル。VS.netがインストールされている環境なら(VS.netフォルダ)\Vc7\PlatformSDK\Includeにあります。
…量の多さにうんざり。中身も今まで見たこともないよぅな宣言になっているし。ってVC++.net用だから当たり前か。どぅやってVB6で通るよぅに書き換えればいいんだ?

VS.netをお持ちでない方は、Microsoftのサイトから.NET Framework SDK Version 1.1をDL→インストールすればいいんですが。ダウンロードサイズが161,185KB。162MBってあんた…。

だめだ、これはいくらなんでも環境の構築手法が非現実的だ。
「やればできる」のかもしれませんが、べらぼうな手間暇がかかってしまいます。

それでも俺はやる、って方は止めませんが。
もぅ少し現実的な手法を考えてみることにしましょう。

トラックバック

このエントリーのトラックバックURL:
http://salv.miscnotes.com/mt/mt-tb.cgi/449

コメントを投稿