2014-01-08 64 views
2

I'm tryng做这样的事情:WPF旋转文本

enter image description here

我有我自己的对象列表,该列表中我所有的资料得出的,我有一个列表框并且每个图都是我在画布位置绘制的一个Listbox项目。

我的问题是当我想绘制名称,因为我必须旋转名称,并在名称的矩形内绘制它,但是当我旋转名称时,我不知道如何绘制它矩形。

我使用这个datatemplate为我的列表框ItemTemplate,我把可见性取决于如果我想绘制图像或名称。

<DataTemplate x:Key="templateList"> 
    <Canvas > 
     <WrapPanel 
        Visibility="{Binding IsStone, Converter={StaticResource converterCheckIsVisibleName}}" 
        Width="{Binding ObjectName.Width}" 
        Height="{Binding ObjectName.Height}"> 

       <TextBlock Text="{Binding ObjectName.Name}" > 
        <TextBlock.RenderTransform> 
         <RotateTransform Angle="{Binding ObjectName.Rotate}" /> 
        </TextBlock.RenderTransform> 
       </TextBlock> 
      </WrapPanel> 


      <Border BorderThickness="1" BorderBrush="Black" 
         Visibility="{Binding IsStone, Converter={StaticResource converterCheckIsVisibleStone}}"> 
        <Image Source="{Binding ObjectIMG.PathImagen}" 
          Height="{Binding ObjectIMG.Height}" 
          Width="{Binding ObjectIMG.Width}" 
          Stretch="Fill" /> 
       </Border> 

      </Canvas>           
     </DataTemplate> 

回答

5

我不是100%确定你的问题是什么,但它好像你只是想旋转一些文本,并把它放到一个矩形。 Rectangle类不带内容元素,所以你不能使用它,但你可以使用一个简单的Border元素。注意

的另一件事是,你应该使用哪一个发生布局通之前,而不是它是继应用RenderTransformLayoutTransform。有关详细信息,请参阅MSDN上的FrameworkElement.LayoutTransform Property页面。试试这样的:

<Border BorderBrush="Black" BorderThickness="5"> 
    <TextBlock Text="{Binding ObjectName.Name}" > 
     <TextBlock.LayoutTransform> 
      <RotateTransform Angle="{Binding ObjectName.Rotate}" /> 
     </TextBlock.LayoutTransform> 
    </TextBlock> 
</Border> 
+0

谢谢你,与LayoutTransform是正确的。 – user1253414

+0

@Sheridan UWP中有相同的属性吗? – quangkid

+0

@quangkid,试着看看[这个页面](https://docs.microsoft.com/en-us/windows/uwp/design/layout/transforms)。 – Sheridan