我想旋轉顯示中的文本。我試圖通過拖動矩形來說明字符串的位置,以說明DrawString方法的區域。RotateTransformed DrawString的位置鼠標
我正在使用RotateTransform和TranslateTransform,它工作正常。但是,拖動時,鼠標光標不會轉換爲停留在正在拖動的矩形的底角。
我錯過了什麼......? ;-)
下面是一些示例代碼,吸引到基地Windows窗體,可以直接粘貼到Windows窗體
Public Class Form1
Dim drawingShape As Boolean = False
Dim mDown, mPos As Point
Dim bitMap1 As Bitmap
Dim txt As String = "Hello folks, here is some text"
Dim angle As Integer = 0
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
bitMap1 = New Bitmap(Me.Width, Me.Height)
End Sub
Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles MyBase.Paint
If drawingShape Then
e.Graphics.RotateTransform(angle, Drawing2D.MatrixOrder.Append)
e.Graphics.TranslateTransform(mDown.X, mDown.Y, Drawing2D.MatrixOrder.Append)
Dim rect As New Rectangle(0, 0, mPos.X - mDown.X, mPos.Y - mDown.Y)
e.Graphics.DrawRectangle(Pens.Red, rect)
e.Graphics.DrawString(txt, New Font("Calibri", 12), Brushes.Green, rect)
e.Graphics.ResetTransform()
End If
End Sub
Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles MyBase.MouseDown
mDown = e.Location
drawingShape = True
End Sub
Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles MyBase.MouseMove
mPos = e.Location
Me.Refresh()
End Sub
Private Sub Form1_MouseUp(sender As Object, e As MouseEventArgs) Handles MyBase.MouseUp
Dim g As Graphics = Graphics.FromImage(bitMap1)
g.RotateTransform(angle, Drawing2D.MatrixOrder.Append)
g.TranslateTransform(mDown.X, mDown.Y, Drawing2D.MatrixOrder.Append)
Dim rect As New Rectangle(0, 0, mPos.X - mDown.X, mPos.Y - mDown.Y)
g.DrawString(txt, New Font("Calibri", 12), Brushes.Blue, rect)
'g.ResetTransform()
g.Dispose()
Me.BackgroundImage = bitMap1
drawingShape = False
angle += 45
End Sub
末級
'xxxTransform'變換相關Graphics對象不是整個應用的方面。您需要手動轉換鼠標位置。例如,當angle = 90時,MDown == Rect Left,所以只有在向左移動時纔會更高。以正常的角度(角度= 0)收集矩形可能更容易(少代碼),然後只轉換成品;也許使用臨時bmp,直到用戶說OK。使用TextRender而不是DrawString,文本看起來可能更好。 – Plutonix 2014-10-11 11:38:54
[這個答案](http://stackoverflow.com/q/23623490/1070452)是我剛剛談論的一個例子,只是一個基本的矩形 – Plutonix 2014-10-11 12:08:05