停止互相重复的效果

时间:2013-11-11 19:43:05

标签: c# visual-studio-2010 effects

我之前发布过这个问题,但我已经将代码修改为一个简单的算法,我仍然遇到与以前相同的问题:

我创建了picturebox,当选择效果时,它会使用颜色矩阵更改picturebox中的图像。

我遇到的问题是,如果我选择一个效果时选择另一个效果,旧效果将不会消失,而是只会停留在选定的新效果下面。我现在使用的效果是棕褐色和灰度,但是任何人都可以帮助我,这样一旦选择了一个效果,旧效果就会被清除,而不是仅仅相互叠加。 “

2 个答案:

答案 0 :(得分:1)

这里的关键是将originalImage缓存在非易失区域中。例如,将其加载到您未触摸的隐藏图片框中。

如果要应用效果,请将原始图像复制到displayImage picturebox中,然后应用效果。

答案 1 :(得分:0)

您也可以将图像设置为当前的图像。我不确定,但这可能会考虑到你已经设定的内容。例如,当您设置

Image originalImage = pictureBox.Image;

这可能会将您显示的图像与您已应用的任何效果一起拍摄,并将其设置为要修改的图像。就像我说的那样,我不确定这一点,因为我现在无法测试它。

修改

以下适用于我:

替换

Bitmap originalImage = (Bitmap)displayPictureBox.Image;
originalImage = (Bitmap)pictureBox.Image.Clone();

使用

Image therealoriginalimage = Image.FromFile(@"C:\Users\Me\Desktop\testimg.png");
Bitmap originalImage = (Bitmap)therealoriginalimage;

由于两个答案都提到它看起来像是在设置原始图像=图片框中当前的内容。

上面的代码是一个快速修复,因此您可以准确地看到发生了什么。您应该修改此内容,并在应用启动后立即将originalimage保存为变量。它比上面的示例更清晰,每次调用方法时设置图像