회전하려는 나침반의 UserControl이 있습니다. 나는 그것을 중심에서 회전하려고 노력하고 있으며 Google은 RenderTransformOrigin="0.5,0.5"
이것을 달성하기 위해 사용 하는 것에 대한 많은 참조를 찾고 있습니다 . 그러나 이것은 어떤 이유로 작동하지 않습니다. 모서리를 원점으로하는 UserControl 만 회전합니다.
내가 설정 CenterX="150"
하고 CenterY="150"
UserControl 내부에 있으면 작동합니다. 그러나 그런 다음 주 창에서 UserControl의 높이와 너비를 300으로 설정해야합니다.
UserControl을 호출 할 때 설정 한 높이 및 너비 설정에 관계없이 UserControl을 중심점에서 회전하려면 어떻게해야합니까? 또한 호출 할 때보다는 UserControl 내부에 RenderTransformOrigin을 설정하는 것을 선호합니다.
(단순화) UserControl XAML :
<UserControl x:Class="Poseidon.Views.CompassUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Poseidon.Views"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Grid.Resources>
<DrawingBrush x:Key="Compass_ver1">
<DrawingBrush.Drawing>
<DrawingGroup>
<DrawingGroup.Children>
<GeometryDrawing Brush="#FF000000" Geometry="M 375.286,151.366C 486.487,151.366 576.634,241.513 576.634,352.714C 576.634,463.915 486.487,554.061 375.286,554.061C 264.085,554.061 173.939,463.915 173.939,352.714C 173.939,241.513 264.085,151.366 375.286,151.366 Z "/>
<GeometryDrawing Geometry="M 375.286,151.366C 486.487,151.366 576.634,241.513 576.634,352.714C 576.634,463.915 486.487,554.061 375.286,554.061C 264.085,554.061 173.939,463.915 173.939,352.714C 173.939,241.513 264.085,151.366 375.286,151.366 Z ">
<GeometryDrawing.Pen>
<Pen Thickness="0.755907" LineJoin="Round" Brush="#FF000000"/>
</GeometryDrawing.Pen>
</GeometryDrawing>
<GeometryDrawing Brush="#FFFFFFFF" Geometry="M 382.484,188.872C 472.971,192.847 543.103,269.425 539.128,359.912C 535.153,450.399 458.575,520.531 368.088,516.556C 277.601,512.58 207.469,436.003 211.444,345.516C 215.42,255.029 291.997,184.897 382.484,188.872 Z "/>
<GeometryDrawing Geometry="M 382.484,188.872C 472.971,192.847 543.103,269.425 539.128,359.912C 535.153,450.399 458.575,520.531 368.088,516.556C 277.601,512.58 207.469,436.003 211.444,345.516C 215.42,255.029 291.997,184.897 382.484,188.872 Z ">
<GeometryDrawing.Pen>
<Pen Thickness="0.755907" LineJoin="Round" Brush="#FF000000"/>
</GeometryDrawing.Pen>
</GeometryDrawing>
<GeometryDrawing Brush="#FF000000" Geometry="M 375.286,227.352L 389.511,202.805L 403.736,178.258L 375.286,178.258L 346.836,178.258L 361.061,202.805L 375.286,227.352 Z "/>
<GeometryDrawing Geometry="M 375.286,227.352L 389.511,202.805L 403.736,178.258L 375.286,178.258L 346.836,178.258L 361.061,202.805L 375.286,227.352 Z ">
<GeometryDrawing.Pen>
<Pen Thickness="0.755907" LineJoin="Round" Brush="#FF000000"/>
</GeometryDrawing.Pen>
</GeometryDrawing>
</DrawingGroup.Children>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
</Grid.Resources>
<Rectangle Fill="{StaticResource Compass_ver1}">
<Rectangle.RenderTransform>
<RotateTransform Angle="{Binding FlightData.Value.Heading}" />
</Rectangle.RenderTransform>
</Rectangle>
</Grid>
</UserControl>
기본 창 XAML :
<local:CompassUserControl DataContext="{Binding Rov}" Height="100" Width="100" RenderTransformOrigin="0.5,0.5"/>
RenderTransformOrigin
특성을 가져 오거나 선언 변환 임의의 중심점을 설정 RenderTransform
하면 변환을 적용한되는 요소의 경계를 기준으로 재산 : https://msdn.microsoft.com/en-us/library/system.windows. uielement.rendertransformorigin (v = vs.110) .aspx
따라서 @Maxim이 제안한대로 다음 RenderTransformOrigin
과 같이 Rectangle
요소 의 속성을 설정해야 합니다 UserControl
.
<Rectangle Fill="{StaticResource Compass_ver1}" RenderTransformOrigin="0.5, 0.5">
<Rectangle.RenderTransform>
<RotateTransform Angle="{Binding FlightData.Value.Heading}" />
</Rectangle.RenderTransform>
</Rectangle>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다