2024/02/09(金) [n年前の日記]
#1 [basic] FreeBASICで反転描画。その4
Windows10 x64 22H2 + FreeBASIC 1.10.1 32bit で、標準機能のグラフィック描画で反転描画する方法について調べてる。
imgput() を改造して、透明色を有効にしたり、描画元領域を指定できるようにしてみたけれど、ウインドウ外に描画すると見た目がおかしくなることに気づいて修正していた。水平垂直反転の描画時は動作するようになったと思ったら、回転描画時にクラッシュしたりして…。まあ、どうにか動く状態になった気がする。
実処理部分をライブラリファイル(lib*.a)化して、ヘッダファイル(.bi)を include すれば使えるようにしてみた。ライブラリファイルは gas ではなく gcc + 最適化有効でコンパイルしたので、Put() と比べて4倍遅かったのが、1.5〜2倍程度の遅さに改善された。
せっかくだから、現状の成果を置いときます。
_imgputt2_20240209.zip
ただ、 _元ファイル(imgput()) のライセンスが不明で…。「改良する元ソースにはなるだろう」とか書いてあった気もするから、自由に使っていいのではと勝手に思ってるけど…。
imgput() を改造して、透明色を有効にしたり、描画元領域を指定できるようにしてみたけれど、ウインドウ外に描画すると見た目がおかしくなることに気づいて修正していた。水平垂直反転の描画時は動作するようになったと思ったら、回転描画時にクラッシュしたりして…。まあ、どうにか動く状態になった気がする。
実処理部分をライブラリファイル(lib*.a)化して、ヘッダファイル(.bi)を include すれば使えるようにしてみた。ライブラリファイルは gas ではなく gcc + 最適化有効でコンパイルしたので、Put() と比べて4倍遅かったのが、1.5〜2倍程度の遅さに改善された。
せっかくだから、現状の成果を置いときます。
_imgputt2_20240209.zip
ただ、 _元ファイル(imgput()) のライセンスが不明で…。「改良する元ソースにはなるだろう」とか書いてあった気もするから、自由に使っていいのではと勝手に思ってるけど…。
◎ サンプルのスクリーンショット :
◎ ライブラリのソースとヘッダーファイル :
◎ 簡単な使い方 :
簡単なサンプル。imgputt.bi を include すれば、imgputt() が使えるようになる。
_simple_sample.bas
_simple_sample.bas
#include once "imgputt.bi" screenres 512, 288, 32 Dim As Any Ptr p = ImageCreate(288, 288) Bload "obj_24bit.bmp", p Put (10, 10), p, (0, 96) - Step(96, 96), Trans imgputt(p, , 10, 10 + 100, TRANSFORM_VFLIP, IMGPUT_TRANS, 0, 96, 96, 96) imagedestroy p sleep
[ ツッコむ ]
以上です。