我有一個我想要旋轉的指南針的UserControl。我試圖從中心旋轉它,谷歌發現大量的參考使用RenderTransformOrigin="0.5,0.5"
來實現這一點。但由於某些原因,這不起作用。它只是將角落作爲原點旋轉UserControl。使用RotateTransform從中心旋轉DrawingBrush
如果在UserControl中設置了CenterX="150"
和CenterY="150"
,它就可以工作。但是,我還必須將主窗口中的用戶控件的高度和寬度設置爲300.
如何在調用UserControl時設置高度和寬度設置而不從UserControl的中心點旋轉UserControl?我還希望在UserControl內部設置RenderTransformOrigin,而不是在調用它時。
(簡體)用戶控件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"/>
你'RotateTransform'被設置在'Rectangle'你的控制中,那麼你爲什麼要設置'RenderTransformOrigin'在' CompassUserControl'而不是在這個矩形上?將'RenderTransformOrigin'移動到'Rectangle',或將'RotateTransform'移動到'CompassUserControl'。 – Maxim
感謝您的反饋。另一個「阿哈!」瞬間.. :-) – Oystein