我想知道是否有可能做到以下幾點:使用圖像作爲WPF按鈕圖標掩碼?
- 創建黑白圖像,說狗的
- 圖像添加到按鈕作爲掩模
- 變化使用(數據)觸發器的風格,例如禁用 - 狗灰色,「加載」 - 狗是紅色的,「準備好」狗是黃色等
基本上我想創建使用像素的按鈕圖標,但能夠在運行時設置顏色取決於觸發器。事情是這樣的:
我想知道是否有可能做到以下幾點:使用圖像作爲WPF按鈕圖標掩碼?
基本上我想創建使用像素的按鈕圖標,但能夠在運行時設置顏色取決於觸發器。事情是這樣的:
2小時後,谷歌搜索在這裏就是答案
<Window x:Class="IconTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<!-- button style -->
<Style x:Key="ToolButton" TargetType="Button">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Width="16" Height="16" Background="#ffbbbbbb">
<Rectangle Name="rect" Fill="Black" OpacityMask="{TemplateBinding Content}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="rect" Property="Fill" Value="Green" />
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="rect" Property="Fill" Value="Yellow" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
<Button Width="16" Height="16" Style="{StaticResource ToolButton}">
<ImageBrush ImageSource="/test.png"/>
</Button>
</Grid>
</Window>
在我看來,你不需要在WPF創建圖像掩碼來實現您的要求。您可以簡單地編輯按鈕類的控件模板。
請參閱本頁面的橢圓按鈕示例。 Control Template
然後,您可以使用觸發器簡單地更改該形狀的填充顏色。 Trigger
乾杯,
我需要使用的圖像設置圖標,因爲我需要更多的比幾何形狀。 – DaveO 2011-04-26 20:31:22
可以定義爲Button
的OpacityMask
。我相信你可以添加觸發器(如果你需要它們)來改變Button的Background
。
樣品:
<Button Height="100" Width="100" Background="Green">
<Button.OpacityMask>
<DrawingBrush AlignmentX="Left" AlignmentY="Top">
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing Brush="#33000000">
<GeometryDrawing.Geometry>
<RectangleGeometry Rect="0,0,40,40" />
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing Brush="#FF000000">
<GeometryDrawing.Geometry>
<RectangleGeometry Rect="10,10,20,20">
<RectangleGeometry.Transform>
<RotateTransform Angle="45" CenterX="20" CenterY="20" />
</RectangleGeometry.Transform>
</RectangleGeometry>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
</Button.OpacityMask>
</Button>
如果將其標記爲答案將會很好! – Rohit 2011-04-27 06:40:58
有時間限制,我還沒有標記。 – DaveO 2011-04-28 03:35:47