我之前发布过这个问题,但我已经将代码修改为一个简单的算法,我仍然遇到与以前相同的问题:
我创建了picturebox
,当选择效果时,它会使用颜色矩阵更改picturebox
中的图像。
我遇到的问题是,如果我选择一个效果时选择另一个效果,旧效果将不会消失,而是只会停留在选定的新效果下面。我现在使用的效果是棕褐色和灰度,但是任何人都可以帮助我,这样一旦选择了一个效果,旧效果就会被清除,而不是仅仅相互叠加。 “
答案 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
保存为变量。它比上面的示例更清晰,每次调用方法时设置图像