【发布时间】:2011-12-15 23:14:53
【问题描述】:
我正在研究工具栏控件,需要想出某种效果来使按钮变灰之类的。
所以,假设我有 PNG 图标,我想以某种方式“变色”它们。这可以通过 XAML 实现吗?还是我需要为此编写代码?有什么指点吗?
【问题讨论】:
标签: c# silverlight xaml
我正在研究工具栏控件,需要想出某种效果来使按钮变灰之类的。
所以,假设我有 PNG 图标,我想以某种方式“变色”它们。这可以通过 XAML 实现吗?还是我需要为此编写代码?有什么指点吗?
【问题讨论】:
标签: c# silverlight xaml
您可以使用逐像素滤镜,正如 Christian Graus 在他的 Image Processing for Dummies with C# and GDI+ Part 1 - Per Pixel Filters (Download 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;
}
}
有关更多示例和其他过滤器,请参阅链接页面。
【讨论】:
当 Button.IsEnabled 为 false 时,只需将图像的不透明度设置为 30% 或 50%。
编辑:我想您可以将 Image.Source 属性更改为禁用的图像文件。有几种方法可以做到这一点:拥有两个图像元素并将可见性属性绑定到按钮的 IsEnabled 属性;通过值转换器运行 Image.Source 属性;或在 IsEnabled 属性更改时使用 Blend 触发器更改 Source 属性。
【讨论】: