Увеличьте изображение и нарисуйте линию

#vb.net #pdf #converters

#vb.net #winforms

Вопрос:

У меня есть коробка с картинками, которая может рисовать на ней линии. и есть кнопка для увеличения масштаба.

Когда я увеличиваю изображение в поле изображения, изображение увеличивается, но нарисованная линия НЕ увеличивается! Линия должна быть увеличена в том же масштабе, что и изображение

МОЙ КОД ТАКОВ :

 Public Class Form1   Private Segments As List(Of Segment) = New List(Of Segment)()  Private NewSegment As Segment = Nothing   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load  End Sub   Private Sub PictureBox1_MouseDown(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseDown  NewSegment = New Segment(Pens.Black, e.Location, e.Location)  PictureBox1.Refresh()  End Sub   Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint  e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias   For Each segment As Segment In Segments  segment.Draw(e.Graphics)  Next   If NewSegment IsNot Nothing Then NewSegment.Draw(e.Graphics)  End Sub   Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove  If NewSegment Is Nothing Then Return  NewSegment.pt2 = e.Location  PictureBox1.Refresh()  End Sub   Private Sub PictureBox1_MouseUp(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseUp  If NewSegment Is Nothing Then Return  NewSegment.pen1 = Pens.Black  Segments.Add(NewSegment)  NewSegment = Nothing  PictureBox1.Refresh()  End Sub   Private Sub Button1_Click(sender As Object, e As EventArgs)  PictureBox1.Image = Image.FromFile("C:UsersaziziDesktopimage.jpg")   End Sub   Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click  PictureBox1.Width  = Convert.ToInt32(PictureBox1.Width * 40 / 1000)  PictureBox1.Height  = Convert.ToInt32(PictureBox1.Height * 40 / 1000)  PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage  End Sub  End Class  Class Segment   Public pen1 As Pen  Public pt1, pt2 As Point   Public Sub New(pen As Pen, point1 As Point, point2 As Point)  pen1 = pen  pt1 = point1  pt2 = point2  End Sub   Public Sub Draw(gr As Graphics)  gr.DrawLine(pen1, pt1, pt2)  End Sub  End Class  

изображение

Комментарии:

1. Вам нужно будет отслеживать соотношение текущего размера PictureBox к его исходному размеру и умножать координаты линий на это соотношение при рисовании.