QImage color painting question



  • Hi, I got a QImage and I want to paint only the red color channel to screen with QPainter.
    I want to paint the red color channel as grayscale, not as red. The blue and green channels should not be painted, I only want information from the red channel.

    What is the best approach?

    Thank you :)



  • One simplistic way is to use iterate over the pixels of your QImage and create a new filtered QImage where each pixel has a value of (r, r, r) where r is the red channel of your original image. Then display your new image.



  • If your image is going to be changing often then it might be better to do this in hardware by using OpenGL and a suitable fragment shader.



  • Thank you, yes, my image is updated 20 times a second, so I want to avoid heavy operations.

    Is there no easy way around this? Do I really need to manipulate the image in such a way?



  • For that kind of refresh rate I would definitely look at OpenGL so that the heavy lifting is done in hardware rather than software (assuming you have an accelerated OpenGL implementation).



  • I agree: you'll have to turn to HW accelerated methods for this, and OpenGL would be the first candidate for that.



  • Okay, thank you :)


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.