为我的PNG图像按钮创建禁用状态

时间:2011-12-15 23:14:54

标签: c# silverlight xaml

我正在进行工具栏控制,需要提出某种效果才能使按钮变灰或显示出来。

所以,让我们说我有PNG图标,我想以某种方式“褪色”它们。这可以通过XAML实现吗?或者我需要为此编写代码吗?有什么指针吗?

2 个答案:

答案 0 :(得分:0)

您可以使用逐像素过滤器,正如Christian Graus在Image Processing for Dummies with C# and GDI+ Part 1 - Per Pixel FiltersDownload source)中演示的那样:

unsafe
{
    byte * p = (byte *)(void *)Scan0;

    int nOffset = stride - b.Width*3;

    byte red, green, blue;

    for(int y=0;y < b.Height;++y)
    {
        for(int x=0; x < b.Width; ++x )
        {
           blue = p[0];
           green = p[1];
           red = p[2];

           p[0] = p[1] = p[2] = (byte)(.299 * red 
               + .587 * green 
               + .114 * blue);

           p += 3;
       }
       p += nOffset;
   }
}

有关更多示例和其他过滤器,请参阅链接页面。

答案 1 :(得分:0)

当Button.IsEnabled为false时,只需将图像的不透明度设置为30%或50%。

编辑:我想您可以将Image.Source属性更改为已禁用的图像文件。有几种方法可以做到这一点:拥有两个图像元素并将visibility属性绑定到按钮的IsEnabled属性;通过值转换器运行Image.Source属性;或者在IsEnabled属性更改时使用Blend触发器更改Source属性。