我想在图像上放置一个静态矩形。
无论图像尺寸如何,矩形都应该是图像尺寸的百分比(如80%)。
我试图将图像放在Canvas和Canvas背景中,但是我无法让图像填满周围区域。
<Canvas Grid.Row="1" Grid.Column="0">
<Canvas.Background>
<ImageBrush ImageSource="{Binding Path=Image1}"/>
</Canvas.Background>
</Canvas>
答案 0 :(得分:4)
将其放入网格中,然后将矩形放在同一行和列中。并使用转换器获得80%的大小。
XAML:
<Window.Resources>
<local:RectangleSizeConverter x:Key="RectangleSizeConverter" />
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Image x:Name="image" Grid.Row="0" Grid.Column="0" Source="C:\on.jpg" />
<Rectangle Height="{Binding ElementName=image, Path=ActualHeight, Converter={StaticResource RectangleSizeConverter}}"
Width="{Binding ElementName=image, Path=ActualWidth, Converter={StaticResource RectangleSizeConverter}}"
Fill="Red" Opacity=".5" />
</Grid>
C#(转换器):
public class RectangleSizeConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return System.Convert.ToDouble(value) * .8;
}
public object ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new System.NotImplementedException();
}
#endregion
}
答案 1 :(得分:3)
使用DrawingBrush只能部分地填充上面的Rectangle,使用纯XAML可以实现这一点:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Image Source="http://sstatic.net/so/img/logo.png" Stretch="None" />
<Rectangle>
<Rectangle.Fill>
<DrawingBrush Viewbox="0,0,1,1" ViewboxUnits="Absolute">
<DrawingBrush.Drawing>
<GeometryDrawing Brush="#66FF0000">
<GeometryDrawing.Geometry>
<RectangleGeometry Rect="0,0,.9,.9" />
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingBrush.Drawing>
</DrawingBrush>
</Rectangle.Fill>
</Rectangle>
</Grid>