wpf - 旋转大元素以适合 WPF 中的较小容器
问题描述
我有一组图像,我需要将其旋转 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 编辑器中的样子:
但这就是我启动程序并且纸张显示为嵌入时的样子:
欢迎任何关于如何在没有过度生长的容器的情况下旋转或事后正确涂抹面膜的解决方案。
解决方案
推荐阅读
- javascript - 如何从 src 构建图像而不构建 html 并在 js 中导入
- python - 在 Python 中使用 SQLite 传递安全查询参数
- visual-studio-code - VSCode 启动配置无需调试即可运行 python 文件
- oracle - Oracle Apex 更改自动完成输入颜色
- python - 使用 Python 和 Jupyter Notebook 时如何关闭 SQLite 数据库连接
- django - 如何从Django中的数组中的单词列表中过滤句子
- ios - 从 JSON 中获取字典的值
- python - 如何将新字典写入 json 文件
- javascript - React Native BackHandler 不遵循状态更新
- ios - 如何在 App 中选择图片并在 Widget 中显示