问题描述
我在qt中有一个加载图像的应用程序。用户可以通过使用setPixel()移动滑块来设置十字。如果他减小滑块,则十字形将变小,并应显示原始像素。
但是不幸的是,当我减小滑块时,什么也没有发生。十字架保持其最大尺寸。
设置像素的功能
void ImageViewer::applyExampleAlgorithm(int kreuzBreite)
{
if(image!=NULL)
{
for(int i=0;i<((kreuzBreite*std::min(image->width(),image->height())/ 100) / 2);i++)
{
image->setPixelColor(image->width()/2+i,image->height()/2,QColor(255,0));
image->setPixelColor(image->width()/2-i,0));
image->setPixelColor(image->width()/2,image->height()/2+i,image->height()/2-i,0));
}
}
updateImagedisplay();
renewLogging();
}
我的滑块
QSlider *slider1 = new QSlider(Qt::Horizontal,0);
slider1->setRange(0,100);
connect(slider1,SIGNAL(valueChanged(int)),this,SLOT(applyExampleAlgorithm(int)));
如您所见,值改变了,但是我的十字架没有改变。
我认为我必须保存原始像素并将其重写,直到此时红叉消失。但是我真的不知道如何。
解决方法
当滑块值减小时,您的函数只会在之前绘制的较大的红色十字中“绘制”较小的红色十字。您可以将原始图像存储在其他变量中。然后,在绘制红十字之前,请还原为原始图像。