wpf - 如何在 WPF 中的图像上覆盖矩形

标签 wpf image overlay

我想在图像顶部放置一个静态矩形。

无论图像大小如何,矩形都应该是图像大小的百分比(例如 80%)。

我尝试将图像放入 Canvas 并作为 Canvas 背景,但无法让图像填充周围区域。

<Canvas Grid.Row="1" Grid.Column="0">
    <Canvas.Background>
        <ImageBrush ImageSource="{Binding Path=Image1}"/>
    </Canvas.Background>
 </Canvas>

最佳答案

把它放在一个网格中,然后把矩形放在同一行和同一列。并使用转换器获得 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
}

关于wpf - 如何在 WPF 中的图像上覆盖矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1560237/

相关文章:

c# - 在一列中具有不同类型控件的未绑定(bind)网格

c# - WebClient登录失败

html - 如何在此幻灯片放映中设置默认图像?

python - 如何将图像集合中的像素(R、G、B)映射到不同的像素颜色值索引?

c# - 仅当数据更改时才允许用户保存的更好方法?

c# - AnyCpu 和 x86 之间的执行时间差异很大

javascript - 在html5 Canvas 上逐帧绘制视频并用 slider 控制

javascript - 谷歌地图 API V3 : Overlay ImageMap with loading indicators

video - 使用 FFMPEG 在视频上叠加视频时如何包含两个音频

android - 运行时替换mapview中的叠加标记图像