我想在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