hakeの日記

Windows環境でプログラミングの勉強をしています。

LOGOをマネる

Ruby/Qteの勉強 その40

LOGOというタートル(カーソル)を相対座標で制御して描画する言語をマネる。
http://ja.wikipedia.org/wiki/LOGO
といってもプログラム言語そのものを作成したわけではなく、Turtleというクラスを作成して、forward(100)をtt.foward(100)と記述といった具合にそのメソッドを記述することで制御を行います。


描画はQPainterで行うが描画対象はQWidgetではなくQPixmapに行う。QWigetの派生クラスPaintWidgetへの描画はrepaintメソッドで発生するpaintEvent内でのbitBltによるブロックコピーで行う、このあたりは以前やった内容を同じ。QPixmapに書くと画像ファイルへの保存が簡単にできます、これは便利(もしかしたらQWidgetからもできるのかもしれないですが)
サンプルでは描画サイズを640x480にしていますが若干画面からはみ出すので、QScrollViewを介してスクロールできるようにしています。

実際の描画内容はdrawメソッドから呼ぶようにしています。内容のサンプルはロゴを始めようにあるhirose01.pdfのプログラムを参考にしました。


ソースは別館のRuby/Qteの勉強部屋にて

draw_whirl


draw_forest


draw_lissajous