2011-12-15 35 views
1

我正在开发工具栏控件,需要想出某种效果来使按钮变灰或出现某种情况。为我的PNG图像按钮创建禁用状态

所以,假设我有PNG图标,我想以某种方式“变色”它们。这可以通过XAML来实现吗?或者我需要为此编写代码?任何指针?

回答

0

您可以使用每个像素的过滤器,基督教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; 
    } 
} 

更多的例子和其他过滤器查看链接页面。

+0

GDI +是否会在Silverlight中工作? – katit 2011-12-15 23:34:38

+0

哎呀!我没看到那个标签!但是,在网上搜索后,我找不到任何明确表示你不能一起使用它们的地方。 – 2011-12-16 14:24:32

0

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

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

相关问题