2013-02-22 5 views
1

안녕하세요 저는 BMP 리더 작가를 루비에 쓰려고하는데 지금은 화면에 글을 쓰고 있습니다. 나는 그림을 픽셀 배열에 저장하고 모든 픽셀에 RGB 색을 저장합니다. 창에서 아무 것도 일어나지 않습니까? 내가 뭘 잘못하고있어? 아니면 픽셀 데이터를 저장할 수있는 qt 개체가 있고 단순히 그것을 칠합니까?qtruby 그림을 한 점 씩 그리시오

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

QPainter.drawPoint은 브러시가 아닌 현재 펜을 사용합니다. 각 지점 앞에 painter.setPen으로 전화하십시오.

그러나 QImage에 픽셀을 저장하는 것이 훨씬 더 좋습니다. Qt는 이미 BMP 파일을 읽는 것을 지원합니다. 그렇게해야만하는 이유가없는 한 스스로 구현할 필요가 없습니다.

+0

아, 고맙습니다. :) QImage 정보는 사실이지만 독자를 쓰고 싶습니다. 그것이 내가하는 일의 주요 부분입니다. 이제 Qt :: Picture에서 이것을 페인트하려고합니다. 데이터 나 다른 객체로 QImage를 채울 방법이 있습니까? 또는 Qt :: Picture를 회전시키기위한 쉬운 조작 클래스? – zajca