WPF InkCanvas绘制矩形和椭圆

2020-01-05 09:58:57王振洲

前面说到了InkCanvas的基本操作,这里用一个实例来说明具体应用:绘制矩形和椭圆。

效果图

WPF,InkCanvas,矩形,椭圆

xaml代码


<Window x:Class="WPF_InkCanvas.ROI_InkCanvas"
    xmlns="http://www.easck.com/winfx/2006/xaml/presentation"
    xmlns:x="http://www.easck.com/winfx/2006/xaml"
    xmlns:d="http://www.easck.com/expression/blend/2008"
    xmlns:mc="http://www.easck.com/markup-compatibility/2006"
    xmlns:local="clr-namespace:WPF_InkCanvas"
    mc:Ignorable="d"
  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition/>
      <RowDefinition Height="auto"/>
    </Grid.RowDefinitions>
    <Image Name="imgMeasure" HorizontalAlignment="Center" Stretch="Uniform"/>
    <InkCanvas Name="inkCanvasMeasure" EditingMode="None" Background="Transparent" Strokes="{Binding InkStrokes, Mode=TwoWay}" HorizontalAlignment="Center" 
          Width="{Binding ElementName=imgMeasure, Path=ActualWidth}" Height="{Binding ElementName=imgMeasure, Path=ActualHeight}"
          MouseDown="InkCanvasMeasure_MouseDown" MouseMove="InkCanvasMeasure_MouseMove">
      <Label Content="{Binding MeaInfo}" Background="Transparent" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10" 
          FontSize="18" Foreground="Red" IsHitTestVisible="False"/>
    </InkCanvas>
    <StackPanel Grid.Row="1" Orientation="Horizontal">
      <Button Content="OpenFile" Margin="5" HorizontalAlignment="Left" FontSize="20" Click="OpenFile_Click"/>
      <ToggleButton Name="btnSquare" Content="Draw Square" Margin="5" HorizontalAlignment="Left" FontSize="20" Click="DrawSquare_Click"/>
      <ToggleButton Name="btnEllipse" Content="Draw Ellipse" Margin="5" HorizontalAlignment="Left" FontSize="20" Click="DrawEllipse_Click"/>
    </StackPanel>
  </Grid>
</Window>