WPF: كيف تضع كائن/شكل في نهاية مسار الخط/السكتة الدماغية؟

StackOverflow https://stackoverflow.com/questions/2368798

  •  24-09-2019
  •  | 
  •  

سؤال

أريد فقط أن أسأل عما إذا كانت هناك طريقة يمكنني فيها وضع كائن (دائرة) في نهاية مسار خط معين.

مشابهة لهذه:

--------------------------------------------O 
Start                                      End

الآن ، لدي الرمز التالي لتتبع السطر:

<Grid x:Name="LayoutRoot" >
  <Path Stroke="Red"  StrokeThickness="4"  x:Name="path4" Data="{Binding MyProperty1}"  >
    <Path.StrokeDashArray>
      <System:Double>500</System:Double>
      <System:Double>1000</System:Double>
    </Path.StrokeDashArray>
  </Path>
</Grid>

حيث تختلف بيانات المسار الخاص بي (مثل M532،668 L523،695 361،663 101،678 117،638).

يبدو أن الرسوم المتحركة الخاصة بي ...

<Storyboard x:Key="Story1" RepeatBehavior="Forever">
  <DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
                                 Storyboard.TargetName="path1"
                                 Storyboard.TargetProperty="(Shape.StrokeDashOffset)">
    <SplineDoubleKeyFrame KeyTime="00:00:00" Value="500"/>
    <SplineDoubleKeyFrame KeyTime="00:00:08" Value="0"/>
  </DoubleAnimationUsingKeyFrames>
</Storyboard>

أي اقتراحات؟

هل كانت مفيدة؟

المحلول

هناك على الأقل بطريقتين يمكنك القيام بذلك ؛ وهو الأفضل على الأرجح يعتمد على علاقة الدائرة بالخط.

إذا كانت الدائرة جزءًا من نفس الشكل مثل الخط ، فقم بتغيير طريقك لتضمين القطع الناقص (ARC) في نهاية الخط. يمكن القيام بذلك عن طريق تغيير بيانات المسار ، إما عن طريق إضافة دائرة إلى النهاية أو عن طريق إضافة رقم آخر إلى قياس المسار.

إذا كانت الدائرة مكونًا منفصلاً من الناحية المفاهيمية ، وكنت تريد فقط وضع هذا المكون بجوار الخط ، فيمكنك فقط استخدام StackPanel مع توجيهه إلى الأفقي:

<StackPanel Orientation="Horizontal">
  <Path />  <!-- The line -->
  <Ellipse />  <!-- The circle -->
</StackPanel>

(ملاحظة: في بعض السيناريوهات ، يمكنك القيام بذلك باستخدام خاصية EndLinEcap. لن ينجح ذلك في هذه الحالة على الرغم من أنه يبدو أنك تريد أن تكون الدائرة أكبر من سمك السكتة الدماغية. خط.)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top