Visual Basic 中学校 投稿プログラム
VB6 対応

 

Visual Basic 中学校 > 投稿プログラム >

SCT_GifPicture 

投稿者:Makohyuさん

SCT_GifPictureはImageコントロールやPictureBoxコントロールなどの画像を操作します。これを使ってあなたのプログラムに簡単に画像の回転・拡大縮小・配色変更・透過処理などを組み込むことができます。しかもソースコード付きですから好きなようにカスタマイズもできます。基本的にフリーウェアですが、使用の際は付属のドキュメントをよくよんで権利関係に気をつけてください。

投稿してくださったMakohyuさんに感謝します。

ダウンロード    SCT_GifPicureDLLV1.00.lzh(465KB)         

初級者向け。Setup.exeを実行してSCT_GIfPictureをインストールすることができます。dll、ocx、ヘルプがインストールされます。

(cabファイルを解凍すればセットアップを実行しなくてもdll、ocxとヘルプファイルを取り出して利用することができます。)

ソースコード     SCT_GifPictureSPV1.00.lzh(206KB)

ソースコードとヘルプが入っています。VB6 Professional Edition以上が必要です。プログラムを見たい方向け。

サンプルプログラム     SCTSamples.lzh(49KB)

SCT_GifPicureを使用したサンプル集です。

 

ファイルはLha形式(拡張子 lzh)で圧縮されています。

ソースコードの改造等ダウンロード者の権利については添付のヘルプファイルををご覧ください。このドキュメントで認められていない行為は行わないでください。

 

V太:博士!今度の作品は画像処理ですよ!早く試してみましょうよ!

博士:ふぉふぉふぉ。このソフトはActiveXじゃから、まず参照設定をする必要があるのぉ。

参照設定?なんですかそれ?どうやってやるんですか?

B子:V太には本当にあきれてしまうわ。[プロジェクト]メニューの[参照設定]のことよ。この画面で一覧の中からSCT_GifPictureを選択すれば便利な機能が簡単に使えるようになるわ。

参照設定さえすればあとはとても簡単なのじゃ。たとえば、次のコードを書くと画像の色合いを簡単に変化させることができるのじゃ。

VB6 対応

Dim SCT As New SCT_GifObject

SCT.SetPicture Picture1.Picture
Set Picture2.Picture = SCT.GetRGBPicture(200, -150, 50)

えーっ!たったこれだけのコードで!?

これが、このSCT_GifPictureの良いところじゃ。続いて次のコードでは画像を回転させることができる。

VB6 対応

Dim SCT As New SCT_GifObject

SCT.SetPicture Picture1.Picture
Set Picture2.Picture = SCT.GetRotatePictureEX(20)

あれー、博士。回転したら画像がちょっとはみだしちゃいましたよ。

まぁ考えても見なさい。長方形を20度回転させたらどうやっても元の長方形に入りきらなくなるじゃろう。多分これで正常なんじゃ。180度の回転とかでは元の長方形にぴったり入るぞ。

ぴったりね。

むむ。よく見ると白い部分が透明になっていませんか?

ほむ。このActiveXは透過処理にためにさまざまな便宜が図られておってな、標準では画像の左上の色が自動的に透過色に設定されるのじゃ。

他にはどんなことができるのかしら?

主な機能だけ表にまとめておくので見ておいて欲しい。しっかりしたヘルプがついておるのでたいていの機能は苦労なく使うことができるぞ。

画像を透過GIF形式でファイルに保存 SaveGifPicture
マスク画像作成 GetMaskPicture

拡大・縮小 GetStretchPicture

 

擬似半透明画像(メッシュ状透過画像)作成 GetMeshPicture

色彩変更 GetRGBPicture
画像を重ねる(オーバーレイ) OverLayPicture

擬似半透明画像(メッシュ状透過画像)の例は参考のためにコードも載せておくぞ。これはオーバーレイを組み合わせて背景が透過するように画像を合成しているのじゃ。ちなみに、透過処理のために内部では透過GIFを作っておるそうじゃ。

VB6 対応

Dim SCT     As New SCT_GifObject
Dim OverLay As New SCT_OverLay
Dim p       As SCT_OLPositionType
Dim Mesh    As StdPicture

SCT.SetPicture Picture1.Picture
Set Mesh = SCT.GetMeshPicture(Mesh1p)

If OverLay.SetBasePicture(Picture2.Picture) = True Then
    OverLay.Transparent = TransOff
    Set Picture2.Picture = OverLay.OverLayPicture(Mesh, p)
End If

なんだかゲームを作るのに使えそうですね!

そういえば博士。GIF画像の仕組みはUnisys社が特許を持っているから、GIF画像を作成するソフトを配布するには特許料を払わなければいけないって聞いたことがあるんですけど?

B子ちゃんは物知りじゃのう。だが心配無用。Unisys社の特許は2004年6月20日に失効しておる。現在では誰でもGIF画像を扱うソフトを自由に公開することができるのじゃ。ただし、ヘルプにも記載されているように将来の特許権については不透明な点もあるらしいので最終的には自己責任となる。

あれあれ〜。博士〜。なんか画像が変な風になっちゃいます…。

おー。さっき言ったじゃろう。左上の色が自動的に透過色にされるのじゃ。それが嫌な場合はたとえば、TransparentプロパティをTransOffにすれば良い。この画像の場合は左上の点とぴったり同じ色だけが透過色にされてきたなく見えているのじゃ。人間の目にはどれも同じ黒にみえるが厳密には違うということじゃ。

どちらにしても、この「簡単さ」はすごいわね。

そういうことかー。よーし、アニメーションやドラッグ&ドロップに応用してすごい視覚効果のソフトを作るぞ〜!