如何绘制颜色范围较柔和的图像?

时间:2012-01-30 15:50:22

标签: c# .net image drawing

我已经为.NET实现了自定义TreeListView,我想添加Ctrl+X / Ctrl+V功能。

我希望当用户剪切节点时,节点图像会比平时更柔和,就像Windows资源管理器那样:

enter image description here

有人可以用C#中的System.Drawing.Image解释如何做到这一点吗?我使用Graphics.DrawImage来绘制图像,所以我需要一个函数来转换图标。

有没有内置算法可以做到这一点?任何一个例子?

4 个答案:

答案 0 :(得分:3)

我只是让图像更透明,而不是改变图像的颜色。你可以使用其他答案中提到的ColorMatrix和一个使alpha通道达到50%左右的矩阵。

float[][] colorMatrixElements = { 
   new float[] {1, 0, 0, 0, 0},
   new float[] {0, 1, 0, 0, 0},
   new float[] {0, 0, 1, 0, 0},
   new float[] {0, 0, 0, 0.5f, 0},        // alpha scaling factor of 50%
   new float[] {0, 0, 0, 0, 1}};

ColorMatrix colorMatrix = new ColorMatrix(colorMatrixElements);

答案 1 :(得分:3)

您可以在顶部绘制一个部分透明的白色矩形。比重新计算所有像素更容易。

答案 2 :(得分:0)

更改图像的亮度。

我找到了一些链接herehere


但如果我是你,我会简化它,只使用我在外部修改的不同图像而不是以编程方式进行。

答案 3 :(得分:0)

请参阅ColorMatrix课程,了解从那里链接的Recoloring Images页面。您应该能够在此处和所有互联网上找到更多信息搜索ColorMatrix

请注意,ColorMatrix类在RGBA空间中工作,因此对颜色进行转换以调整亮度和饱和度并不是那么简单。在HSV领域做这种事情往往更容易。在RGBA空间中,最好只需调整Alpha通道(A),使颜色看起来更暗。

如果您只有一小组有限的图标,那么使用您最喜爱的Photoshop克隆手动制作第二组颜色调整图标通常会更容易。