2016-07-05 6 views
0

두 개의 원 개체가 모두 캔버스 위에 그려져 있습니다.스토리 보드를 사용하여 움직이는 물체의 위치를 ​​얻으십시오. Universal Windows App

double x = Canvas.GetLeft(circle1); 

하지만이 원하기 전에 값을 가져옵니다 나는 그것이 CIRCLE2에 도달하면 지금 내가 볼 수있는 이동 CIRCLE1의 위치를 ​​추적 할 시각적 인 2015 년 블렌드에서 만든 스토리 보드 하나를 이동하고있어 이 시도 움직 였고 그 움직임을 추적하지 못했습니다.

누구나이 문제를 해결하는 방법을 알고 계십니까? 감사

내가 비주얼 스튜디오 2015 혼합을 사용

답변

1

, 그것은 다음과 같은 몇 가지 코드 생성이 코드에서

<Page ...> 
    <Page.Resources> 
     <Storyboard x:Name="Storyboard1" > 
      <DoubleAnimation Duration="0:0:1" To="210" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="ellipse" d:IsOptimized="True"/> 
      <DoubleAnimation Duration="0:0:1" To="114" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="ellipse" d:IsOptimized="True"/> 
     </Storyboard> 
    </Page.Resources> 

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
     <Canvas Width="600" Height="600"> 
      <Ellipse x:Name="ellipse" Fill="#FFF4F4F5" Height="100" Stroke="Black" Width="100" RenderTransformOrigin="0.5,0.5"> 
       <Ellipse.RenderTransform> 
        <CompositeTransform/> 
       </Ellipse.RenderTransform> 
      </Ellipse> 
     </Canvas> 
    </Grid> 
</Page> 

을, 우리는이 움직임에 RenderTransform, 특히 TranslateXTranslateY을 변경함으로써 달성되는 것을 확인할 수 있습니다 스토리 보드. 따라서 원의 위치는 변경되지 않습니다. 그리고 Canvas.GetLeft 메서드를 사용하는 동안 항상 원이 설정된 값을 반환합니다. 너무 많은 당신의 설명은 매우 명확하고 많은 도움이었다

var transform = (circle1.RenderTransform as CompositeTransform); 
var x = Canvas.GetLeft(circle1) + transform.TranslateX; 
var y = Canvas.GetTop(circle1) + transform.TranslateY; 
+0

감사 :

우리는 같은 TranslateXTranslateY으로 계산할 수의 "위치"를 얻으려면 –

관련 문제