我想在mouseEnter事件触发时更改元素的背景颜色。如何使背景的颜色变深?我以为我可以使用不透明面具,但它是一个渐变,但我需要它是坚实的。它也必须在可视化的基本代码中,而不是在xaml中。 请帮帮我!变暗元素颜色
Q
变暗元素颜色
3
A
回答
2
不透明度蒙版不是一个非常好的选项,因为它可以修改不透明度。此外,不透明遮罩可以是任何类型的画笔,它不一定是渐变。
您可以执行以下两项操作之一:操作当前画笔或在控件顶部添加黑色矩形并更改矩形的不透明度。
如果你让我知道你喜欢什么,我可以写一些代码。
(为什么它必须是代码,而不是XAML?)
编辑
<Window x:Class="TestWpfApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TestWpfApplication"
Title="MainWindow"
Height="350"
Width="525">
<StackPanel>
<Grid>
<TextBox Background="Red"
FontSize="24" />
<Rectangle x:Name="overlay"
Fill="Black"
IsHitTestVisible="False"
Opacity="0" />
<Grid.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation To="0.9"
Duration="0:0:0.2"
Storyboard.TargetName="overlay"
Storyboard.TargetProperty="(Rectangle.Opacity)" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="MouseLeave">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation To="0"
Duration="0:0:0.2"
Storyboard.TargetName="overlay"
Storyboard.TargetProperty="(Rectangle.Opacity)" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Grid.Triggers>
</Grid>
</StackPanel>
</Window>
1
我可能会使用这个ValueConverter
。最近使用该转换器来改变不透明度:
public class ChangeColorOpacityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Color input = (Color)value;
input.A = byte.Parse((string)parameter); //Changes alpha to ValueConverterParameter
return input;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
}
你可以改变这个变暗的颜色,只是由两个把所有颜色通道为例。
VC用法示例:
<Border>
<Border.Resources>
<vc:DarkenColorConverter x:Key="DarkenColorConverter"/>
</Border.Resources>
<Border.Background>
<SolidColorBrush Color="{Binding MyColor, Converter={StaticResource DarkenColorConverter}}"/>
</Border.Background>
</Border>
如果你利用你需要指定为ConverterParameter
绑定值参数。
相关问题
- 1. Javascript变暗背景颜色
- 2. 折线图填充颜色变暗
- 3. OpenGL颜色/ alpha输出稍微变暗
- 4. 如何让元素的颜色更加黑暗:悬停?
- 5. RGB 24位到16位颜色转换 - 颜色变暗
- 6. 使geom_text颜色比geom_point颜色更暗
- 7. 打印时改变元素的颜色
- 8. 改变wordpress主题元素的颜色
- 9. 加载动画期间变暗/昏暗的背景元素 - Android
- 10. 灰度的蟒蛇 - incorect颜色暗灰色变为浅灰色到深灰色
- 11. 防止改变颜色的单元格再次改变颜色
- 12. 基于php变量改变a:before元素的背景颜色
- 13. 打开菜单上的页面变暗与rgba不昏暗的文字颜色
- 14. iPhone上的颜色显示比颜色值更暗
- 15. 设置对话框的“暗淡”颜色
- 16. 改变颜色的颜色
- 17. 亮或者变暗十六进制颜色
- 18. 深度测试禁用时,Java OpenGL颜色材质变暗
- 19. UIButton的背景颜色逐渐变暗触摸下拖动
- 20. 防止重叠颜色在Google地图中变暗
- 21. 动态改变颜色形式的灯光到黑暗
- 22. C#最佳方式将颜色变暗直至其可读
- 23. 滚动列表标题/节颜色变暗
- 24. 改变根元素的背景颜色点击或选择子元素
- 25. 变暗的MKMapView的背景色而不变暗MKOverlay
- 26. 有条件地改变angularjs元素的颜色?
- 27. 如何让每个元素在点击时改变颜色?
- 28. jQuery使用通配符*改变所有子元素的颜色
- 29. 用骷髅改变HTML元素的颜色
- 30. Firefox - 改变背景颜色选择元素的奇怪渲染?
好的,你能告诉我一个例子,使一个红色的矩形变暗吗?这两种选择有什么区别?似乎添加一个矩形会更慢。它必须以代码形式存在,因为这些元素是无形地添加的。 – Cobold 2011-05-08 18:45:16
@Cobold:动态添加项目通常并不意味着您需要在WPF中编写代码隐藏功能才能正确显示它们。 – 2011-05-08 18:49:02
@ H.B。那么如何才能将矩形的填充更改为只在xaml中更深,如果您没有设置属性的话,那么该怎么办? – Cobold 2011-05-08 18:52:16