おえかきそふと

唐突ですが、最近お絵かきソフトを作っています。
4/23にあったCSセミナー(学校の授業)後、ついカッとなって作り始めました。


今回のコンセプトはフルスクラッチ

  • タブレットとか使いたい!
  • もう、GDIなんかに頼らない!
  • GUIも自分で書きたいよね!

まずは、タブレット。4月の初めに、Intuos4を買ったことですし、以前からやってみたかったので。

Windowsタブレットの利用 Wintab

Windowsからタブレットを利用するには、これを用いるらしい。
ライセンスが云々とか書いてあるサイトもいくらかありますが、まぁ問題なさそう。
筆圧・角度は簡単に取得できました。Intuos4についてるタッチパッドとかはどうやるんだろう?

参考にしたサイトは以下のとおり 文献は古いなぁ

2D描画エンジン

せっかく画像編集系のソフトを作るので、ゆくゆくはMacでも動かしたいなぁと思い、2D描画エンジンから書き始めました。
とりあえず、以下の本を購入。(4/25位のこと?)

フルスクラッチによるグラフィックスプログラミング入門

フルスクラッチによるグラフィックスプログラミング入門

もう絶版になってるみたいですが、Amazon経由で手に入ります。

仕事の関係で、3Dエンジンを使った2D描画とかやっていて、そちらとの関連もありちょっとマニアックなことをやってみました。
ひたすらに、ピクセルの配列を塗りつぶす。
3Dグラフィックも2Dの上に立っているので、原点に立ち戻る感じで非常に勉強なります。
とくに、アンチエイリアスあたりは結構参考になりそう。

で、線・矩形・多角形の描画を実装。あと、矩形転送も。まぁ、メモリをコピーするだけですが。
三角形描画も実装したので、3Dレンダラとかも書いてみようかな。どれくらいパフォーマンス出るんだろう。
アルファブレンディングも実装。ARGB+ARGB→ARGBの合成方法がよくわからなかったので調べてみたら…

みたいなことをするらしいです。
これで、それなりに描画ができるようになりました。
拡大縮小の画像転送はまだまだ問題あり。

以上に加えて、ストロークの描画も実装。タブレットの筆圧を使ってそれなりに描画できます。
Photoshopみたいなエアブラシを作りたいのですが、どうやるんだろう?

GUI

編集中のキャンパス上に半透明のコントロールを表示したり、凝ったコントロールを実装したかったので、簡単なGUI機構も実装。
今のところ、ボタンとスライダバーのみ。メニューは面倒だったので、Windowsのメニューのラッパを書きました。