我想旋转显示中的文本。我试图通过拖动矩形来说明字符串的位置,以说明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