Hatena::ブログ(Diary)

はけの徒然日記 このページをアンテナに追加 RSSフィード

2005 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 04 | 05 | 08 | 09 | 10 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 | 11 |
2011 | 01 | 02 | 03 | 04 | 11 | 12 |
2012 | 02 | 03 | 05 |
2014 | 02 | 03 | 04 | 05 | 12 |
2015 | 05 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 04 | 05 | 08 | 09 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 |

2006-09-23(Sat)

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

f:id:hake:20060923221058j:image

draw_forest

f:id:hake:20060923221057j:image

draw_lissajous

f:id:hake:20060923221055j:image

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/hake/20060923/p2