HOME → 情報 → 懐かしのパソコンネタ
■ AB淡幻ライブラリ + Win32APIを使用したサンプル(タイルペイント)
2012.1.29
"何を今さら"的企画、「レトロパソコンのお絵描きプログラム」を改変したいと思い試行錯誤しています。 一応、お絵描きプログラムは完成しました。ソフトウェアのダウンロードはこちらです。
現在のプログラムの作りとして、タイルペイントに関しては自作関数になっています。 640×400
(等倍)は、AcriveBasic標準の関数(Win32APIを使用)していますので、タイルペイントのみは自作関数、それ以外の描画(PAINT、PSET、LINE)はWin32APIです。
640×200(縦ピクセルを2倍描画)は、全てが自作関数になります。 (AcriveBasic標準の関数は使用していません) この自作関数が遅すぎるのです。(特にペイント関数)
私の技術不足を補うには、やはり既にあるモノを使用した方が手っ取り早いでしょう。
そこで、「描画をWin32APIを任せ、拡大表示が出来ないのか??」と考えてみました
これが、実現できれば、640×400モードであろうが、640×200モードであろうが、(普通のペイントソフトの様に)自在に表示拡大が可能となりそうです。
一応、サンプルプログラムを作ってみました。 もしかすると、かなり行儀が悪い作りになっているのかもしれません。
以下は等倍の画面です。 (サンプルプログラムではこの画面になりません)
サンプルプログラムを実行してみます。 しかし、仮想画面に描画後に実画面に拡大が出来たら良いのですが、どうにもうまく出来ませんでした。
Win32APIで描画後に縦2倍にしています。その後に同じ処理をすると、1回目に描いたモノが4倍になってしまいます。 (当然の結果ですね。クイズダービーみたい。「2倍、さらに倍みたいな」・・・・・)
2回目の描画直前に1回目の等倍画面に戻してから2回目を描画しています。 (※サンプルプログラムの44行目PUT_SCR()を実行されるようにすると)
これだと、期待された通りに描画が行われます。
しかし、この手法だと(連続して描画する際には)画面が点滅するかのようです。 (実画面上で、等倍→拡大を繰り返すので、これも当然ですね)
仮想画面に対してWin32APIによる描画が可能になれば、拡大表示の実装が可能になるかもしれません。
|