C# 画图工具 怎么实现画板坐标刻度的标记

好大夫好伐 2019-01-24 02:05:15

像图片标注的那样的刻度
...全文
1601 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
music2018 2019-09-16
  • 打赏
  • 举报
回复
网上有开源的代码,git上面可以下载InteractiveDataDisplay
RunnerDNA 2019-05-24
  • 打赏
  • 举报
回复
简单方法直接用Line控件画出,效果:


<Grid x:Name="gridPic" Background="Black">
<Canvas>
<Line x:Name="colTicks1" Canvas.Left="1" Canvas.Top="0" Stroke="White" Opacity="1" StrokeThickness="1" X1="0" X2="0" Y1="0" Y2="8"></Line>
<Line x:Name="colTicks2" Canvas.Left="137" Canvas.Top="0" Stroke="White" Opacity="1" StrokeThickness="1" X1="0" X2="0" Y1="0" Y2="8"></Line>
<Line x:Name="colTicks3" Canvas.Left="273" Canvas.Top="0" Stroke="White" Opacity="1" StrokeThickness="1" X1="0" X2="0" Y1="0" Y2="8"></Line>
<Line x:Name="colTicks4" Canvas.Left="410" Canvas.Top="0" Stroke="White" Opacity="1" StrokeThickness="1" X1="0" X2="0" Y1="0" Y2="8"></Line>
<Line x:Name="colTicks5" Canvas.Left="545" Canvas.Top="0" Stroke="White" Opacity="1" StrokeThickness="1" X1="0" X2="0" Y1="0" Y2="8"></Line>
<Label x:Name="lblcolTickValue1" Foreground="White" FontSize="8" Width="30" Content="-640" Height="10" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Padding="0" Canvas.Left="0" Canvas.Top="0"></Label>
<Label x:Name="lblcolTickValue2" Foreground="White" FontSize="8" Width="30" Content="-320" Height="10" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Padding="0" Canvas.Left="137" Canvas.Top="0"></Label>
<Label x:Name="lblcolTickValue3" Foreground="White" FontSize="8" Width="30" Content="0" Height="10" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Padding="0" Canvas.Left="265" Canvas.Top="0"></Label>
<Label x:Name="lblcolTickValue4" Foreground="White" FontSize="8" Width="30" Content="320" Height="10" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Padding="0" Canvas.Left="410" Canvas.Top="0"></Label>
<Label x:Name="lblcolTickValue5" Foreground="White" FontSize="8" Width="30" Content="640" Height="10" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Padding="0" Canvas.Left="515" Canvas.Top="0"></Label>
</Canvas>
<Canvas>
<Line x:Name="rowTicks1" Canvas.Left="0" Canvas.Top="0" Stroke="White" Opacity="1" StrokeThickness="1" X1="0" X2="8" Y1="0" Y2="0"></Line>
<Line x:Name="rowTicks2" Canvas.Left="0" Canvas.Top="77" Stroke="White" Opacity="1" StrokeThickness="1" X1="0" X2="8" Y1="0" Y2="0"></Line>
<Line x:Name="rowTicks3" Canvas.Left="0" Canvas.Top="154" Stroke="White" Opacity="1" StrokeThickness="1" X1="0" X2="8" Y1="0" Y2="0"></Line>
<Line x:Name="rowTicks4" Canvas.Left="0" Canvas.Top="231" Stroke="White" Opacity="1" StrokeThickness="1" X1="0" X2="8" Y1="0" Y2="0"></Line>
<Line x:Name="rowTicks5" Canvas.Left="0" Canvas.Top="309" Stroke="White" Opacity="1" StrokeThickness="1" X1="0" X2="8" Y1="0" Y2="0"></Line>
<Label x:Name="lblrowTickValue1" Foreground="White" FontSize="8" Width="30" Content="-360" Height="10" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Padding="0" Canvas.Left="0" Canvas.Top="32">
<Label.RenderTransform>
<TransformGroup>
<RotateTransform Angle="-90"/>
</TransformGroup>
</Label.RenderTransform>
</Label>
<Label x:Name="lblrowTickValue2" Foreground="White" FontSize="8" Width="30" Content="-180" Height="10" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Padding="0" Canvas.Left="0" Canvas.Top="107">
<Label.RenderTransform>
<TransformGroup>
<RotateTransform Angle="-90"/>
</TransformGroup>
</Label.RenderTransform>
</Label>
<Label x:Name="lblrowTickValue3" Foreground="White" FontSize="8" Width="30" Content="0" Height="10" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Padding="0" Canvas.Left="0" Canvas.Top="160">
<Label.RenderTransform>
<TransformGroup>
<RotateTransform Angle="-90"/>
</TransformGroup>
</Label.RenderTransform>
</Label>
<Label x:Name="lblrowTickValue4" Foreground="White" FontSize="8" Width="30" Content="180" Height="10" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Padding="0" Canvas.Left="0" Canvas.Top="231">
<Label.RenderTransform>
<TransformGroup>
<RotateTransform Angle="-90"/>
</TransformGroup>
</Label.RenderTransform>
</Label>
<Label x:Name="lblrowTickValue5" Foreground="White" FontSize="8" Width="30" Content="360" Height="10" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Padding="0" Canvas.Left="0" Canvas.Top="309">
<Label.RenderTransform>
<TransformGroup>
<RotateTransform Angle="-90"/>
</TransformGroup>
</Label.RenderTransform>
</Label>
</Canvas>
</Grid>


复杂点的可以自己封装一个控件。
groveer 2019-01-26
  • 打赏
  • 举报
回复
获得图片对象左上角位置,然后就是以那个位置画轴线了 线的位置都是定长的,应该不难处理
aqbeyond 2019-01-25
  • 打赏
  • 举报
回复
自己把线画出来就是了。DrawLine。

8,731

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧