2017-01-09 3 views
-1

色はrgba成分の値が(0,127,0,100)であり、この色にQImageをマークし、QImageの赤色を読み取ると、それは異なる値、すなわち赤色成分= 50を与える。QImageのピクセルのアルファ値を含む正しい色成分を取得する方法は?

コード

m_color(QColor(0,127,0,100); 
    m_pen.setColor(m_color); //set Qpen color 
    m_painter.setPen(m_pen); 
    m_painter.setCompositionMode(QPainter::CompositionMode_Source); 
    painter->drawPixmap(Qpoint(0,0),*m_Pixmap);//m_Pixmap is QPixmap 
    m_painter.drawline(initialpoint,finalpoint);// draw line over transparent pixmap item 
    QImage img =m_Pixmap->toImage; 

    for (int i=0;i<img.height();i++) //col 
    { 
     for(int j=0;j<img.width();j++) //row 
     { 
      qDebug()<<qGreen(img.pixel(j,i)); /// it return 50 during traverse painter line else give 0/// but it should return 127 as red component is 127 
    ///code 
      } 
      if(QColor(img.pixel(j,i)==m_color)/// its never true// it should true during traverse the line draw by painter on pixmap 
        ///code 
      } 
     } 
    } 

何もそれが直接、線を描く画家に設定されている...とm_colorはアルファがある場合

+0

どこで 'm_pen'を使ったことがありますか?また、ペインタでアンチエイリアスが有効な場合は、実際に書き込まれた色に影響しますので注意してください。 –

+0

はどのオブジェクトペインタに添付されていますか?最後の行は、それが 'img'であることを示唆しています。もしそうなら、この 'img'をどのように初期化しましたか(' QImage'と仮定します)?なぜ私は 'i、j'があなたが線を描くのに使った適切な色を期待しているところのイメージの一部を指していると確信していますか? –

+0

ようこそスタックオーバーフロー!コードを問題の[mcve]にするようにコードを編集してください。そうすれば、それを再現して解決することができます。 [ask]も読んでください。 –

答えて

0

255は、Qt4を文書によると、アルファ値なしに色を持っている場合や、色のマッチングが真でありますm_Pixmap-> toImageはアルファチャンネルのないRGB32画像を返します。データ形式は0xFFRRGGBBです。だから、アルファは、常に255

http://doc.qt.io/qt-4.8/qpixmap.html#toImage

あなたのイメージは、QPixmapのに変換するときQImageのを維持してくださいになります。

関連する問題