我已经为.NET实现了自定义TreeListView
,我想添加Ctrl+X / Ctrl+V
功能。
我希望当用户剪切节点时,节点图像会比平时更柔和,就像Windows资源管理器那样:
有人可以用C#中的System.Drawing.Image
解释如何做到这一点吗?我使用Graphics.DrawImage
来绘制图像,所以我需要一个函数来转换图标。
有没有内置算法可以做到这一点?任何一个例子?
答案 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)
答案 3 :(得分:0)
请参阅ColorMatrix课程,了解从那里链接的Recoloring Images页面。您应该能够在此处和所有互联网上找到更多信息搜索ColorMatrix
。
请注意,ColorMatrix
类在RGBA空间中工作,因此对颜色进行转换以调整亮度和饱和度并不是那么简单。在HSV领域做这种事情往往更容易。在RGBA空间中,最好只需调整Alpha通道(A),使颜色看起来更暗。
如果您只有一小组有限的图标,那么使用您最喜爱的Photoshop克隆手动制作第二组颜色调整图标通常会更容易。