1

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

I created a pictureboxwhich, when an effect is selected, it will then change the image in the pictureboxusing the color matrix.

我遇到的问题是,如果我在选择另一个效果时选择了另一个效果,那么旧效果不会消失,而是会停留在那里并位于所选新效果的下方。我现在使用的效果是棕褐色和灰度,但是任何人都可以帮助我,这样一旦选择了一种效果,旧的效果就会被清除,而不是它们只是相互叠加。"

4

2 回答 2

1

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

如果要应用效果,请将 originalImage 复制到 displayImagepicturebox中,然后应用效果。

于 2013-11-11T19:48:09.113 回答
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您的应用程序启动后立即将其保存为变量。它会比上面每次调用该方法时设置图像的示例要干净得多

于 2013-11-11T19:47:57.280 回答