antenn-a
company profile

MFC航海日記 二十三日(表示ルーチンの設計)

前回の最後に少し書いたのだが、このソフトのメインに当たる表示部分が今回の最大の難所になる(そんなたいした物ではないが)

当初考えていたのはウィンドウに直接色を書き込んでいくものだったのだが、表示速度が遅く文字がちらつく為取り止めにした。

興味のある人はそのベータ版を試していただきたい。ダウンロードはここからどうぞ。

α版をダウンロードしたかたは分かると思うが、明らかに表示速度が違う。

prev

表示する速度を上げる為にはやはりメモリDCを使うしかない!と思い、今回初挑戦してみた。

読者の方がデバイスコンテキストを学んだかどうかが分からないので、ここで軽く記述しておく。

ウィンドウに文字や絵を描こうと思った時には、DC(Device Context)なる物を用意しなければならない。 ノートに鉛筆で書くように、ウィンドウに書く為のいろいろな道具がある。 ここで、DCとはノートに相当する物である。(実際はちょっと違うが)

文字を書きたければ、TextOut()という関数があるし、色の着いた文字が書きたければ、SetTextColor()という関数もある。 この他にも、ブラシもあるしペンもあるし色々できる。

prev

実際に書き込む時に書き込む方法が大きく分けて2種類ある。 1つは実際にウィンドウに書き込む方法。 これがベータ版で用いた方法である。

もう一つが、メモリ上に任意の大きさのビットマップを用意してその上に書き込み、ビット転送でウィンドウに焼き付ける方法。 これがα版で行ったやり方である。

プログラムをしていると、できれば避けたい事というのがいくつか出てくる。 代表的なのが、ファイルアクセスである。

ファイルアクセスはとんでもなく時間がかかるので、できれば避けたい。 だから、メモリ上にとって置いてメモリの中だけで処理しようとする。

これと同様に、実際にウィンドウに書き込むというのも、すばらしく時間がかかるのである。

そこで、表示速度を早くする為にはメモリ内で時間のかかる書き込み動作をしておいて、ビット転送をする事で一発で表示させるようにしたのである。

prev

実装方法は後の回で詳しく説明する事にして、今回はこのぐらいにしておく。


antenn-a

prev next


antenn-a