在图像上绘制矩形

8
我想在一个单独的图像上绘制一些矩形。例如,我有以下(白色和黑色)船舶轮廓,并且我想在特定位置添加一些(黄色和红色)矩形。是否可能?如何实现?
您可以使用Rectangle类来创建矩形,并将其放置在Image上。您可以使用XAML或C#代码来完成此操作。要使矩形出现在正确的位置,请设置其Margin属性。
2个回答

13

如果您已经知道要突出显示的区域的x,y,宽度和高度,则可以将所有控件放入画布中。

您可以在代码后台设置矩形的属性,如下所示:

Rectangle rectangle = new Rectangle();
rectangle.SetValue(Canvas.LeftProperty, 10);
rectangle.SetValue(Canvas.TopProperty, 10);
rectangle.Width = 1000;
rectangle.Height = 50;
rectangle.Fill = new SolidColorBrush() { Color = Colors.Red, Opacity = 0.75f };

canvas.Children.Add(rectangle);

如果你想在XAML中添加它们,可以这样做。

<Canvas>
    <Image Source="..."/>
    <Rectangle Canvas.Left="10" Canvas.Top="10" Width="1000" Height="50">
        <Rectangle.Fill>
           <SolidColorBrush Color="Red" Opacity="0.75"/>
        </Rectangle.Fill>
    </Rectangle>                        
</Canvas>

1
他还想使颜色具有透明度。 - kenny
我已经更新了答案,加入了C#和XAML代码,使矩形变成红色并略微透明。 - Andy
好的,太棒了,你可以使用C#版本,也许创建一个方法,该方法接受矩形的位置、大小和颜色以及要放置矩形的画布的引用? - Andy
2
@Andy,你有什么想法可以让矩形随着图像一起拉伸吗?因为现在它并不会随着图像的拉伸而改变大小。 - vijiboy
1
你可以把整个东西放在一个ViewBox中。 - Andy

4

尝试这个,它也将有所帮助。

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Multi_Textbox.Window1"
x:Name="Window"
Title="Window1"
Width="640" Height="480">

<Grid x:Name="LayoutRoot">
    <Image Margin="104,50,75,99" Source="barkship.jpg"/>
    <Rectangle Fill="#FF28B0DE" HorizontalAlignment="Left" Height="17.334" Margin="212,0,0,111.333" Stroke="Black" VerticalAlignment="Bottom" Width="99.667"/>
    <TextBlock HorizontalAlignment="Left" Height="11" Margin="230.667,0,0,115" TextWrapping="Wrap" Text="CHANDRU" VerticalAlignment="Bottom" Width="63.333" Foreground="White"/>
</Grid>

输出结果如下:

结果


这个有点讽刺,加一。 - Mauro Sampietro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接