[Qt-interest] How to paint the Background of QImage without loosing its Foreground Contents.
John McClurkin
jwm at nei.nih.gov
Fri Jul 31 20:06:37 CEST 2009
varun singh wrote:
> hi,
>
> Well, i'm trying to make a painting application. I'm getting some trouble with setting the background color.
>
> I've QImage object as my painting space, hence i used QImage->fill() fuction to fill the QImage with a particular color.
>
> But, if i scribble something on QImage (with Pen) and then use fill function, it clears everything n fills the image with the new color (well, that's obvious)...
>
> Hence I've run nested for loops to access each pixel of Qimage and check whether it is already colored with Pen, if it is not then i call setPixel() function to color it with background color.
>
> But its not working, each pixel is still getting painted.
>
> Here is the code
>
> ******************************************************************************
> //mBColor is of type QRgb.
> void PaintWidget::setBColor(QRgb color) //sets the Background Color
> {
> mBColor = color;
> int x, y;
> for(x = 0; x <= mPaintImage->width() - 1; x++)
> {
> for(y = 0; y <= mPaintImage->height() - 1; y++)
> {
> if(QColor(mPaintImage->pixel(x, y)) != mFColor) //mFColor is
> { //Foregournd
> mPaintImage->setPixel(x, y, mBColor); //Ccolor.
> }
> }
> }
> emit bColorChanged(mBColor);
> update();
> }
>
> *******************************************************************************
>
> I'm Desperately looking for some help.
>
> -Varun
P.S. maybe the alpha values are different.
More information about the Qt-interest-old
mailing list