mieki256's diary



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()) のライセンスが不明で…。「改良する元ソースにはなるだろう」とか書いてあった気もするから、自由に使っていいのではと勝手に思ってるけど…。

サンプルのスクリーンショット :

同梱のサンプルファイルを実行した際の結果は以下。

ss_test_imgputt.png

ss_bench_imgputt.png

ss_simple_sample.png

ss_move_sample.png

ライブラリのソースとヘッダーファイル :

ライブラリのソースとヘッダーファイルは以下。

_imgputt.bas
_imgputt.bi

簡単な使い方 :

簡単なサンプル。imgputt.bi を include すれば、imgputt() が使えるようになる。

_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

以上です。

過去ログ表示

Prev - 2024/02 - Next
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project