嗨,我正在尝试用ruby编写BMP阅读器,但现在我被困在屏幕上了。我将图片存储在像素阵列中,并在每个像素上存储rgb颜色。但是在window中什么都没有发生?我哪里做错了?或者有没有什么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发布于 2013-02-22 22:21:55
QPainter.drawPoint使用当前钢笔,而不是画笔。在每个点之前调用painter.setPen。
但最好将像素存储在QImage中。Qt已经支持读取BMP文件,所以没有必要自己实现它,除非你有很好的理由。
https://stackoverflow.com/questions/15023898
复制相似问题