jpn*_*ini 5 wpf transform rotation scaletransform
我有一个自定义构建的控件,它是一个矩形,里面有一些细节,但它是一个矩形.
我有一个中心点(X,Y),我称之为"重心",它代表了这一点.这意味着当我为对象设置新位置时,我希望此点位于设置位置.当我旋转对象时,我需要它围绕这一点旋转.当我缩放对象时,该点必须保持在之前设置的位置.只有对象的大小必须改变.
例如,为了轻松了解问题,假设我有一个10X10的正方形.我将引力的中心设置在正方形的正中心:(5,5).然后我将对象位置设置为(100,100).然后,广场将在:
(95,95),(105,95),(105,105),(95,105),这意味着它的中心位于所需位置.
如果我使用值2缩放方形,则新的4个点位置将为:
(90,90),(110,90),(110,110),(90,110),这意味着它的中心将保持在所需位置.
如果我将它旋转45度,它将围绕其中心旋转位置:
(92.93,92.93),(107.07,92.93),(107.07,107.07),(92.93,107.07)
如何才能实现这一点,其中心完全可配置,所有这些转换为WPF中的程序透明?我只想设置比例,位置,旋转角度和中心以正确绘制.
谢谢!
sha*_*roz 10
您可以设置变换的中心点相对于对象的大小.如果要围绕对象的左上角旋转,则值为0, 0.要绕着右下角10%的位置旋转,你可以使用1.1, 1.1.
该属性被称为RenderTransformOriginRotationTranforms.在Blend中,属性中有一个"Transform"组.如果展开它,RenderTransform有一组选项卡.第五个是中心点.
这是XAML的一些示例:
<TextBlock Text="TextBlock" RenderTransformOrigin="-0.5,-0.5" Background="#FFA1BBF9" Margin="50" Width="100" Height="100">
    <TextBlock.RenderTransform>
        <TransformGroup>
            <ScaleTransform ScaleX="2"/>
            <SkewTransform/>
            <RotateTransform Angle="30"/>
            <TranslateTransform/>
         </TransformGroup>
     </TextBlock.RenderTransform>
</TextBlock>