2014-01-08 62 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