嗨,我正在尝试用红宝石写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
答案 0 :(得分:0)
QPainter.drawPoint
使用当前的笔,而不是画笔。在每个点之前致电painter.setPen
。
但是将像素存储在QImage
中会更好。 Qt已经支持阅读BMP文件,因此除非你有充分的理由,否则不需要自己实现。