2009-09-17 2 views
3

나는 간단하고 수평 인 <Line> 엘리먼트를 가지고있다. 이 선은 그것에 적용된 RotateTransform을가집니다.이 선은 내가 선택한 각도로 선을 기울입니다. 문제는 변환이 적용될 때 전에 행의 렌더링 된 길이가 으로 계산된다는 것입니다. 결과적으로 선은 회전 한 후에 더 이상 부모 요소에 맞지 않습니다. 도시 된 바와 같이
http://img179.imageshack.us/img179/2592/slantpartial.png
하는 라인과 접촉하지 않는다 :
WPF 요소를 이전에 회전하지 않고 크기를 변경하려면 어떻게해야합니까?

<Grid Background="Orange"> 
    <Line HorizontalAlignment="Left" VerticalAlignment="Bottom" 
      RenderTransformOrigin="0,0" Stretch="UniformToFill" 
      StrokeThickness="1" Stroke="Green" X1="0" Y1="0" X2="1" Y2="0"> 
     <UIElement.RenderTransform> 
      <RotateTransform Angle="-15" /> 
     </UIElement.RenderTransform> 
    </Line> 
</Grid> 

결과이있다 :

내 현재 코드는 예를 들어 15 °로하여,이 비슷 회전으로 인해 컨트롤의 오른쪽 가능한 한 가장 큰 크기로 늘어나고 각도를 설정하는 것과 관계없이 부모 컨트롤을 완전히 채울 선이 필요합니다. 각도는 런타임에 동적으로 변경되며 현재 프로젝트에서 경사 계산을 사용할 수 없습니다. RotateTransform을 선을 기울이는 수단으로 유지해야합니다.

내가 달성하기 위해 필요한의 예 - 다시, 예를 들어 15 °를 사용 :
http://img42.imageshack.us/img42/8276/slantcomplete.png

답변

1

이의 왼쪽 상단과 오른쪽 하단 모서리 사이의 최대 거리만큼 라인을 확인 부모 컨테이너. 이렇게하면 평평하게 놓을 때 컨테이너보다 약간 더 길어 지지만 50 % 경사면에서는 완벽하게 맞습니다. 부모가 오버 플로우를 자르도록하십시오.

+1

RenderTransform이 적용되기 전에 선이 레이아웃 시스템에 의해 잘 리기 때문에 RenderTransform을 사용하면이 기능이 작동하지 않습니다. 그러나이 솔루션은 LayoutTransform에서 완벽하게 작동합니다. 수동으로 줄을 길게하면 레이아웃 시스템이 코드 지정 길이를 사용하게되어 "늘이기"를 제외한 다른 요소를 무시합니다. 이 솔루션을 작동 시키려면 "Stretch"속성을 "None"으로 설정해야합니다. 마찬가지로 "HorizontalAlignment"및 "VerticalAlignment"속성을 "Stretch"로 설정하면 안됩니다. – Giffyguy

+0

(시스템에서 답을 upvote하지 못하게됩니다.) 정말 답답합니다 ...) – Giffyguy

1

당신은 회전 변환하기 전에 변환 스케일을 시도 할 수 있습니다 :

<UIElement.RenderTransform> 
    <TransformGroup> 
    <ScaleTransform ScaleX="2.0" /> 
    <RotateTransform Angle="-15" /> 
    </TransformGroup> 
</UIElement.RenderTransform> 
+0

이 솔루션의 문제점은 라인의 두께를 조정하여 최종 결과를 왜곡한다는 것입니다. – Giffyguy

0

가장 간단한 솔루션은 동적 아니라 X와 Y 값을 변경으로 RenderTransform을 사용하는 것입니다. 기울기 계산을 사용할 수없는 이유는 무엇입니까?

+0

기울기를 사용하여 선을 정의 할 수 없습니다. 그라디언트와 다른 눈 - 사탕을 나중에이 선에 적용해야 할 가능성이 높습니다. 경사 선은 그래디언트의 좌표계와 다르게 반응하지만 평평한 선은 항상 같은 방식으로 반응합니다. 그래디언트 이후에 변형이 적용되므로 그래디언트가 선과 함께 회전되므로 여전히 올바르게 렌더링됩니다. 더 명확히 들어, 내 질문에 관한이 참조하십시오 : http://stackoverflow.com/questions/1412833/ – Giffyguy

관련 문제