首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >windows 8渲染旋转不正确

windows 8渲染旋转不正确
EN

Stack Overflow用户
提问于 2014-12-29 18:38:48
回答 2查看 227关注 0票数 0

我正在开发Windows 8 C#/XAML .NET 4.5应用程序

我有一个页面有的纵向定位(只有-我需要在这个方向的页面)。

在页面上,我是一个顶部的面板,下面是作为内容的页面的其余部分。内容需要由顺时针旋转90度,旋转的内容必须填充页面的其余部分。

我遇到的问题是,在我将内容旋转90度之后,并不是所有的东西都显示为。即使我将内容设置为正方形(相同的宽度和高度),并将其围绕中心旋转90度,也只有原来显示在屏幕上的部分被渲染。

简化示例:

代码语言:javascript
复制
<!-- SIMPLIFIED FOR BREVITY  -->
<page with portrait orientation>
  <Grid x:Name=Content>
     <Grid.RowDefinitions>
       <RowDefinition Height="120" /> <!-- TOP PANEL -->
       <RowDefinition Height="*"   /> <!-- REST OF THE CONTENT -->
     </Grid.RowDefinitions>

     <TopPanelControl />


     <!-- I'M working with 480 x 800 page resolution -->
     <!-- for the purpose of simplicity              -->
     <!-- But the page can be any size               -->

     <Grid x:Name="RotatedContent"
             Background="Red"
             RenderTransformOrigin="0.5,0.5"
             VerticalAlignment="Center"
             HorizontalAlignment="Center"
             Width="668"
             Height="400"
             Grid.Row="1">
             <!-- EVEN IF THE HEIGHT IS 668, result is the same -->
         <Grid.RenderTransform>
           <RotateTransform Angle="90"/>
         </Grid.RenderTransform>
         <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
         </Grid.RowDefinitions> 
         <Grid.ColumnDefinitions>
           <ColumnDefinition Width="*" />
           <ColumnDefinition Width="*" />
           <ColumnDefinition Width="*" />
         </Grid.ColumnDefinitions>

         <TextBlock Grid.Row="0"
                    Grid.Column="0" 
                    Text="000"
                    TextAlignment="Left"/>

         <TextBlock Grid.Row="1"
                    Grid.Column="1" 
                    Text="111"
                    TextAlignment="Center"/>

         <TextBlock Grid.Row="2"
                    Grid.Column="2" 
                    Text="222"
                    TextAlignment="Right"/>

     </Grid>

  </Grid>
</page>

我的问题是:

如何将一个比屏幕更宽的控件旋转90度(但不是旋转时),然后显示IT整体(未剪裁)。

EN

回答 2

Stack Overflow用户

发布于 2014-12-29 19:54:52

ViewBox可以方便地扩展内容。将网格封装在ViewBox中。

XAML

代码语言:javascript
复制
<Viewbox  Grid.Row='1'
          Stretch='Uniform'
          RenderTransformOrigin="0.5,0.5"
          VerticalAlignment='Top'
          HorizontalAlignment='Right'>

  <Grid x:Name="RotatedContent"
        Background="DarkRed"
        Height='400'
        Width='400'
        Grid.Row='1'
        RenderTransformOrigin="0.5,0.5">
    <Grid.RenderTransform>
      <RotateTransform Angle="0" />
    </Grid.RenderTransform>
    ...
</Viewbox

ScreenShots

票数 1
EN

Stack Overflow用户

发布于 2014-12-30 14:56:22

我已经通过使用画布控件找到了解决自己问题的方法。画布控件可以比手机屏幕更大,但是当旋转时,它上的所有内容都会被正确地呈现,而不需要剪裁(唯一的问题是背景)。我将在稍后完成更全面的回答,现在没有时间。

P.S.:如果有人想在我有时间之前写它,这个答案是要编辑的:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27694186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档