Я делаю программу спектрограммы, которая отображает спектрограмму в виде изображения на холсте. В настоящее время у меня есть ось, а также другие линии, связанные с itemControl с помощью привязки. Я хочу иметь возможность добавлять текстовые блоки на холст, чтобы можно было добавлять значения к выемкам оси.
<ScrollViewer HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" Name="spectrogramScrollViewer" Loaded="SpectrogramScrollViewer_Loaded" >
<ItemsControl x:Name="SpecItem" ItemsSource="{Binding Path=Lines}">
<ItemsControl.ItemsPanel >
<ItemsPanelTemplate x:Name="spectrogramTemplate">
<Canvas Loaded="SpectrogramCanvas_Loaded" MouseUp="Spectrogram_MouseUp" MouseDown="Spectrogram_MouseDown" x:Name="SpectrogramCanvas" HorizontalAlignment="Left" Grid.Row="0" Height="{Binding ImageHeight, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}" Width="{Binding ImageWidth, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
>
<i:Interaction.Behaviors>
<mouseMoveMvvm:MouseBehaviour MouseX="{Binding PanelX, Mode=OneWayToSource}" MouseY="{Binding PanelY, Mode=OneWayToSource}" />
</i:Interaction.Behaviors>
<Canvas.LayoutTransform>
<ScaleTransform ScaleX="{Binding ScaleTransformX}" ScaleY="{Binding ScaleTransformY}"/>
</Canvas.LayoutTransform>
<Canvas.Background>
<ImageBrush ImageSource="{Binding SpectrogramImage, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}" />
</Canvas.Background>
</Canvas>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Rectangle Width="{Binding Width}" Height="{Binding Height}" Stroke="Gray" StrokeThickness="{Binding StrokeThickness}">
<Rectangle.RenderTransform>
<TranslateTransform X="{Binding CanvasLeft}" Y="{Binding CanvasTop}"/>
</Rectangle.RenderTransform>
</Rectangle>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>