85DATA HOMEへ
MYCAR情報掲示板BLOGプロフィール

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による描画が可能になれば、拡大表示の実装が可能になるかもしれません。