旋转也调整大小?

And*_*ers 5 wpf xaml rotatetransform

我有这个xaml

    <Image Width="240" Height="240">                
        <Image.Source>                    
            <DrawingImage>
                <DrawingImage.Drawing>
                    <DrawingGroup>
                        <DrawingGroup>
                            <DrawingGroup>
                                <DrawingGroup.Transform>
                                    <TransformGroup>
                                        <RotateTransform Angle="-15" CenterX="120" CenterY="120" />
                                        <TranslateTransform Y="-20" />
                                    </TransformGroup>
                                </DrawingGroup.Transform>

                                <ImageDrawing ImageSource="Images\pNxVK.png" Rect="0,0,240,240" />
                            </DrawingGroup>

                            <DrawingGroup.ClipGeometry>
                                <EllipseGeometry Center="120,120" RadiusX="60" RadiusY="60" />
                            </DrawingGroup.ClipGeometry>
                        </DrawingGroup>

                        <DrawingGroup>
                            <DrawingGroup>
                                <!--<DrawingGroup.Transform>
                                    <RotateTransform Angle="-15" CenterX="120" CenterY="120" />
                                </DrawingGroup.Transform>-->
                                <ImageDrawing ImageSource="Images\zUr8D.png" Rect="0,0,240,240" />
                            </DrawingGroup>                                        
                            <ImageDrawing ImageSource="Images\XPZW9.png" Rect="0,0,240,240" />
                        </DrawingGroup>                                
                    </DrawingGroup>
                </DrawingImage.Drawing>
            </DrawingImage>
        </Image.Source>
    </Image>
Run Code Online (Sandbox Code Playgroud)

xaml的结果是(正确的大小)

在此输入图像描述

如果我取消注释上面的xaml中的旋转变换我得到这个(错误的大小) 在此输入图像描述

Mat*_*ský 3

图纸是长方形的。旋转的矩形比未旋转的矩形具有更大的边界框,因此必须对其进行缩放以适应原始边界。

您可以通过指定最外面的 DrawingGroup 的 ClipGeometry 来解决此问题 - 只需将其剪辑到原始边界即可。

<DrawingGroup.ClipGeometry>
    <RectangleGeometry Rect="0 0 240 240" />
</DrawingGroup.ClipGeometry>
Run Code Online (Sandbox Code Playgroud)