【问题标题】:Special shape of Line starting and ending point in wpf C#wpf C#中线条起点和终点的特殊形状
【发布时间】:2021-03-08 07:40:04
【问题描述】:

您好,我需要一个特殊形状的起点和终点线的解决方案。我使用线属性。我想要这样的解决方案。

你可以看到这个 Line 属性在开头和结尾都有“+”的形状。如何在 XAML 和我的代码中执行。这是我的代码

<Canvas Margin="10" IsEnabled="{Binding IsEnableCanvas}"  Visibility="{Binding Path=ISCanvasVisible, Converter={StaticResource Converter}}">
<Image Source="{Binding DIIMGFINAL}"    cal:Message.Attach="[Event MouseDown] = [Action MDownCalCulateDistance($source, $eventArgs)];
[Event MouseUp] = [Action MUpCalCulateDistance($source, $eventArgs)];
[Event MouseMove] = [Action MMoveCalCulateDistance($source, $eventArgs)]" Stretch="Uniform" />
<Line Visibility="{Binding Path=ISLineDistanceVisible, Converter={StaticResource Converter}}"  IsHitTestVisible="False"  X1="{Binding FirstPoint.X}" Y1="{Binding FirstPoint.Y}"
X2="{Binding SecondPoint.X}" Y2="{Binding SecondPoint.Y}" StrokeStartLineCap="Triangle"  StrokeEndLineCap="Triangle" 
Stroke="Red" StrokeThickness="2">

</Line>
<TextBlock Canvas.Left="{Binding TxtblckPoint_First_Left.X}" Canvas.Top="{Binding TxtblckPoint_Second_Left.Y}" Text="{Binding Path=DisTanceInMM, Mode=OneWay}" FontSize="20" Foreground="Yellow"></TextBlock></Canvas>

如您所见,我使用了 StrokeStartLineCap 和 StrokeEndLineCap Triangle,但这不是我想要的。如果我使用更大的 StrokeThickness 值,它可以看到。但我的要求并没有那么厚。这是我的 C# 代码

                     if (_firstPoint.X == 0 && _firstPoint.Y == 0)
                    {
                    System.Windows.Point px1 = e.GetPosition((System.Windows.Controls.Image)sender);

                    _firstPoint = px1;
                    }
                    else if((_firstPoint.X != 0 && _firstPoint.Y != 0) && (_secondPoint.X == 0 && _secondPoint.Y == 0)){
                    System.Windows.Point px2 = e.GetPosition((System.Windows.Controls.Image)sender);
                    _secondPoint = px2;
                    var geometry = new FrameGeometry(DicomDataSet);
                    var patientCoord1 = geometry.TransformImagePointToPatient(new Point2(Convert.ToInt32(_firstPoint.X), Convert.ToInt32(_firstPoint.Y)));
                    var patientCoord2 = geometry.TransformImagePointToPatient(new Point2(Convert.ToInt32(_secondPoint.X), Convert.ToInt32(_secondPoint.Y)));

                    FirstPoint = _firstPoint;
                    SecondPoint = _secondPoint;}

我必须做些什么来展示起点和终点的特殊形状。提前致谢。

【问题讨论】:

  • 在端点处放置两个您需要的任意形状的 Path 元素。
  • 你能不能给出一些我看不懂的代码
  • 我应该在 C# 或 XAML 中放置什么

标签: c# wpf image mvvm caliburn.micro


【解决方案1】:

在端点放置两个您需要的任意形状的 Path 元素:

<Path Stroke="Red" Data="M-5,0 L5,0 M0,-5 L0,5"
      Canvas.Left="{Binding FirstPoint.X}"
      Canvas.Top="{Binding FirstPoint.Y}"/>

<Path Stroke="Red"
      Canvas.Left="{Binding SecondPoint.X}"
      Canvas.Top="{Binding SecondPoint.Y}">
    <Path.Data>
        <GeometryGroup>
            <LineGeometry StartPoint="-5,0" EndPoint="5,0"/>
            <LineGeometry StartPoint="0,-5" EndPoint="0,5"/>
        </GeometryGroup>
    </Path.Data>
</Path>

【讨论】:

  • 谢谢。它可以创建形状,但 Line 不工作了,我正在处理这个
  • 谢谢它的工作,但我遇到了另一个问题现在必须解决它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-15
  • 2018-09-27
相关资源
最近更新 更多