0

我有一组图像,我需要将其旋转 90 度才能放入将打印在纸张上的网格中。

我原来的带有图像包的 UserControl 比更高的更宽,所以我将它旋转了 90 度。

我的问题是,如果我保持适当的容器大小,则在旋转之前绘制在容器外部的图像包部分将不会出现在旋转的元素中。

如果我让容器变大以适应未旋转的包装,然后旋转,它看起来不错,但之后我无法缩小容器。

我最后的尝试是用纸张大小创建一个边框,并将其用作旋转元素上的 OpacityMask。像这样:

<StackPanel>
  <!-- other stuff -->
  <Grid>
     <Border x:Name="mask" Width="787" Height="1064" Background="Red"/> // this is the desired size for paper sheet
     <Grid x:name="Container"> //Extended grid overgrown to fit un rotated package
        <Grid.Opacitymask>
           <VisualBrush Visual="{Binding ElementName=mask}"/>
        </Grid.Opacitymask>
        

        <!-- My pack of images -->
        <gMaterialWPF:MultiEPView x:Name="AllEP" Grid.Row="1" IsSignalQuality="False" 
                                          Margin="-250,0,0,0" IsMultiPDF="True"
                                          Grid.RowSpan="4" Grid.ColumnSpan="2" 
                                          RenderTransformOrigin="0.5,0.5" Height="500" Width="950" 
                                          Loaded="AllEP_Loaded" OpacityMask="{Binding ElementName=windowView}">
                    <gMaterialWPF:MultiEPView.RenderTransform>
                        <TransformGroup>
                            <ScaleTransform/>
                            <SkewTransform/>
                            <RotateTransform Angle="-90"/>
                            <TranslateTransform/>
                        </TransformGroup>
                    </gMaterialWPF:MultiEPView.RenderTransform>
                </gMaterialWPF:MultiEPView>

     </Grid>
</StackPanel>

这是它在 VisualStudio 编辑器中的样子:

在此处输入图像描述

但这就是我启动程序并且纸张显示为嵌入时的样子:

在此处输入图像描述

欢迎任何关于如何在没有过度生长的容器的情况下旋转或事后正确涂抹面膜的解决方案。

4

0 回答 0