#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 к его исходному размеру и умножать координаты линий на это соотношение при рисовании.