Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 防止过度铺设的影响?_C#_Image_Effect - Fatal编程技术网

C# 防止过度铺设的影响?

C# 防止过度铺设的影响?,c#,image,effect,C#,Image,Effect,所以基本上我有两个效果。一个是乌贼墨,另一个是一些水的效果,当我把水的效果放在图片上,然后去把乌贼墨的效果放在上面,乌贼墨的效果会覆盖在水上。我不明白它为什么要这样做,我知道要添加一个额外的图片框,使图片盒不可见,但这不是一种有效的方法,他们必须是另一种更有效的方法,有人可以分享吗 乌贼墨 非常不清楚你的问题是什么-你有一个图像,并在一个序列中应用2个效果-所以这两个效果都将应用,这对我来说是合理的。你能澄清一下你对应用2种效果的预期结果吗?旁注:请编辑您的示例以删除注释和空白。代码注释旁注:一

所以基本上我有两个效果。一个是乌贼墨,另一个是一些水的效果,当我把水的效果放在图片上,然后去把乌贼墨的效果放在上面,乌贼墨的效果会覆盖在水上。我不明白它为什么要这样做,我知道要添加一个额外的图片框,使图片盒不可见,但这不是一种有效的方法,他们必须是另一种更有效的方法,有人可以分享吗

乌贼墨


非常不清楚你的问题是什么-你有一个图像,并在一个序列中应用2个效果-所以这两个效果都将应用,这对我来说是合理的。你能澄清一下你对应用2种效果的预期结果吗?旁注:请编辑您的示例以删除注释和空白。代码注释旁注:一般情况下,请避免注释与旁边的代码完全相同。即a=a+1//将1添加到a,或在示例//中,获取当前坐标下的像素,该像素恰好位于执行该灰度的代码行旁边。GetPixelxCoordinate,yCoordinate@阿列克谢列文科夫a=a+1//加1到a。哈哈哈史诗。@AlexeiLevenkov更新了!基本上,效果是相互叠加的,我不希望它这样做,它们有没有办法阻止它这样做?当我应用一个效果的时候,我只是想让它显示这个效果,而不是叠加在另一个效果的上面,它们必须是另一种更有效的方法——是的,它被称为。你应该避免试图重新发明轮子。微软已经做到了这一点,他们比我们任何人都清楚。
private void btnGrayscale_Click(object sender, EventArgs e)
{

Bitmap grayScale = (Bitmap)picOriginal.Image.Clone();
int height = grayScale.Size.Height;
int width = grayScale.Size.Width;    
for (int yCoordinate = 0; yCoordinate < height; yCoordinate++)

{

for (int xCoordinate = 0; xCoordinate < width; xCoordinate++)

{
Color color = grayScale.GetPixel(xCoordinate, yCoordinate);
int grayColor = (color.R + color.G + color.B) / 3;
grayScale.SetPixel(xCoordinate, yCoordinate,     Color.FromArgb(grayColor,grayColor,grayColor));

 }

} 
 picModified.Image = grayScale;
 ColorMatrix matrix = new ColorMatrix(new float[][]{
 new float[] {0, 4, 0, 0, 0},
 new float[] {0, 0, 4, 0, 4},
 new float[] {0, 0, 0, 4, 0},
 new float[] {     0,      0,      4, 0, 1},
  new float[] {     0,      0,      0, 4, 0}
 });

 Image image = (Bitmap)picOriginal.Image.Clone();
 ImageAttributes attributes = new ImageAttributes();
 attributes.SetColorMatrix(matrix);
 Graphics graphics = Graphics.FromImage(image);
 graphics.DrawImage(image,

 new Rectangle(0, 0, image.Width, image.Height),0,0,image.Width,image.Height,
 GraphicsUnit.Pixel,attributes);

 graphics.Dispose();


 picModified.Image = image;


 }