Поворот одной фигуры - PullRequest
1 голос
/ 19 января 2020

Я хочу нарисовать первую повернутую и вторую не повернутую. Когда я запускаю приведенный ниже код, он не показывает первую цифру, а вторая поворачивается. Сброс не работает. Мне нужно сохранить порядок цифр без изменений.

    Private Sub Form17_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        Dim x, y As Integer
        e.Graphics.SmoothingMode = SmoothingMode.HighQuality
        'Figure 1
        Dim Mx As Matrix = New Matrix()
        x = 59 : y = 25
        Mx.RotateAt(90, New Point(x, y), MatrixOrder.Append)
        e.Graphics.Transform = Mx
        e.Graphics.DrawEllipse(New Pen(Color.Green, 1), New Rectangle(x + 3, y - 5, 10, 10))
        e.Graphics.DrawLine(New Pen(Color.Green, 1), x, y - 2, x + 13, y - 2)
        e.Graphics.DrawLine(New Pen(Color.Green, 1), x, y + 2, x + 13, y + 2)
        e.Graphics.DrawLine(New Pen(Color.Green, 1), x + 8, y - 5, x + 8, y + 5)
        Mx.Reset()
        'Figura 2
        e.Graphics.DrawEllipse(New Pen(Color.Blue, 1), New Rectangle(x + 3, y - 5, 10, 10))
        e.Graphics.DrawLine(New Pen(Color.Blue, 1), x, y - 2, x + 13, y - 2)
        e.Graphics.DrawLine(New Pen(Color.Blue, 1), x, y + 2, x + 13, y + 2)
        e.Graphics.DrawLine(New Pen(Color.Blue, 1), x + 8, y - 5, x + 8, y + 5)
    End Sub

Что не так?

1 Ответ

0 голосов
/ 19 января 2020

Две фигуры нарисованы друг на друге. Переназначить матрицу после сброса:

Mx.Reset()
e.Graphics.Transform = Mx ' <======== Add this line!
...