qtruby逐点绘制图片

时间:2013-02-22 12:07:33

标签: ruby qt pixel image qtruby

嗨,我正在尝试用红宝石写BMP读写器,现在我坚持在屏幕上写它。 我将图片存储在像素阵列中,并在每个像素上存储rgb颜色。 但窗户里什么都没发生?我做错了什么?或者是否有任何qt对象可以存储像素数据并简单地绘制它?

def initialize
    super

    setWindowTitle "Transparent rectangles"

    resize 590, 90
    move 300, 300

    show
end

def paintEvent event

      painter = Qt::Painter.new self
      bmp = BMP::Reader.new("picture.bmp")
      drawPicture(painter,bmp.getPixels())
      painter.end
end


def drawPicture(painter, pixels)

    painter.setPen Qt::NoPen
      0.upto(pixels.length-1) do |i|
        0.upto(pixels[0].length-1) do |j|
          painter.setBrush Qt::Brush.new Qt::Color.new pixels[i][j][2], pixels[i][j][1], pixels[i][j][0], 255
          painter.drawPoint(i,j)
        end
      end
end

1 个答案:

答案 0 :(得分:0)

QPainter.drawPoint使用当前的笔,而不是画笔。在每个点之前致电painter.setPen

但是将像素存储在QImage中会更好。 Qt已经支持阅读BMP文件,因此除非你有充分的理由,否则不需要自己实现。