#!/usr/bin/env ruby require "qte" require "qpe" include Qte include Qpe class SampleWindow < QMainWindow def initialize() super() setCaption(tr("サンプル")) @msg = QLabel.new(tr("描画のサンプル"),self) @msg.setGeometry(0,0,310,35) self.update() # paintEvent発生 # self.repaint() catchEvent end # 描画する式の定義 def function(x) Math.sin(x / 40.0) * 150 # (x ** 3) / 10000 end # 描画 def draw @p = QPainter.new @pen = QPen.new( Qt::black, 1) # 黒、幅1 @p.begin(self) # 描画開始 @p.setPen(@pen) @p.drawLine(0, 240, 640, 240) @p.drawLine(320, 0, 320, 480) @pen.setColor( Qt::blue ) # 青 @p.setPen(@pen) x = -320 y = function(x) @p.moveTo(x + 320, 240 - y) # 初期座標設定 for x in -319 .. 319 y = function(x) @p.lineTo(x + 320, 240 - y) # 一つ前の座標から線をひく # @p.drawPoint(x + 320, 240 - y) # 点を打つ end @p.end # 描画終了 end def paintEvent(p) draw end end $defaultCodec = QTextCodec.codecForName("utf8") app = QPEApplication.new([$0]+ARGV) app.setDefaultCodec($defaultCodec) QApplication.setFont(QFont.new("lcfont",18)) app.showMainWidget(SampleWindow.new) app.exec