2013-10-03 141 views
5

我可以旋轉面板和文本90º,它適用於我。但旋轉180º不起作用,我看不到文字。我能做些什麼來解決它?C#旋轉變換

else if (m_orientation == AfyLabelOrientation.TurnedLeft90) 
     { 
      e.Graphics.TranslateTransform(0, this.Height - 5); 
      e.Graphics.RotateTransform(270); 

      if (!TextShadow_) 
      { 
       e.Graphics.DrawString(this.Text, this.Font, new SolidBrush(this.ForeColor), new RectangleF(Padding.Left, Padding.Top, this.Height, this.Width)); 
      } 
      else if (TextShadow_) 
      { 
       //Drawing text shadow 
       e.Graphics.DrawString(this.Text, this.Font, new SolidBrush(Color.Gray), new RectangleF(Padding.Left + 1, Padding.Top - 1, this.Height, this.Width)); 

       //Drawing text 
       e.Graphics.DrawString(this.Text, this.Font, new SolidBrush(this.ForeColor), new RectangleF(Padding.Left, Padding.Top, this.Height, this.Width)); 
      } 
     } 
     else if(m_orientation == AfyLabelOrientation.Overturned)//This don't work 
     { 
      e.Graphics.TranslateTransform(this.Width, 0); 
      e.Graphics.RotateTransform(180); 

      if (!TextShadow_) 
      { 
       e.Graphics.DrawString(this.Text, this.Font, new SolidBrush(this.ForeColor), new RectangleF(Padding.Left, Padding.Top, this.Height, this.Width)); 
      } 
      else if (TextShadow_) 
      { 
       //text shadow 
       e.Graphics.DrawString(this.Text, this.Font, new SolidBrush(Color.Gray), new RectangleF(Padding.Left + 1, Padding.Top - 1, this.Height, this.Width)); 

       //text 
       e.Graphics.DrawString(this.Text, this.Font, new SolidBrush(this.ForeColor), new RectangleF(Padding.Left, Padding.Top, this.Height, this.Width)); 
      } 
     } 
+0

你可能會問一個更清晰的問題嗎?它似乎更多的是一個聲明 – JonE

+0

如何使180旋轉工作正確。 – Zuhan

+0

可能當你旋轉時,對象正在改變他的座標,它的翻譯。 – Butzke

回答

4

如果我得到它,您需要翻譯到對象以保持其中心。

RotateTransform始終圍繞原點旋轉。因此,您需要先將旋轉中心轉換爲原點,然後旋轉,然後再將其轉換回原點。

//move rotation point to center of image 
g.TranslateTransform((float)this.Width/2, (float)this.Height/2); 
//rotate 
g.RotateTransform(angle); 
//move image back 
g.TranslateTransform(-(float)this.Width/2,-(float)this.Height/2); 
1

這可能是,你想旋轉的是在容器的左上角。然後,旋轉圍繞對象的左上角旋轉,因此180度旋轉將您的對象移動到視圖窗口之外。

________ 
|text | 
_________ 

旋轉成類似:

_______ 
text|  | 
    ________ 
當然

我畫text旋轉,而只是試圖idicate其位置。將旋轉點移動到文本的中間位置,或者在旋轉後將文本的寬度向右移動,直到文本放置在正確的位置。