Страница: 1 |
Страница: 1 |
Вопрос: Отрисовка по координатам
Добавлено: 08.10.09 02:38
Автор вопроса: topograf
Здравствуйте форумчане.
я недавно начал изучать .net, поэтому требуется помощь.
Задача такая:
есть массив точек с координатами, нужно их отобразить на pictureBoxe и соединить полилинией.
координаты метрические типа x=-1232.2515,y=-1825.2254; x=2541.3365,y=2144.6654 и т.д.
Никак не могу разобраться с единицами измерения.
И желательно что-бы при событии MouseMove, координаты курсора отображались-бы в этих-же координатах, н-р в заголовке формы или в любом другом месте, н-р так:
Me.Text = "x=" & Format(_mouse.X, "#.0000") & " м : y=" & Format(_mouse.Y, "#.0000") & " м".
В идеале, все это должно выглядеть как в AutoCad'e, т.е. возможность увеличения, уменьшения и сдвига картинки.
За любую помощь, заранее спасибо.
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #1
Добавлено: 08.10.09 16:20
Допустим у тебя есть:
Xk и Yk - координаты
M - Масштаб
camX и camY - Положение камеры.
преобразуешь их примерно так:
X = (Xk - camX)*M
Y = (Yk - camX)*M
Масштаб можно тоже легко вычислить:
Берешь расстояние от самой левой до самой правой точки(из твоего массива), H.
W - Размер PictureBox.
M=W/H
Номер ответа: 2
Автор ответа:
topograf
Вопросов: 3
Ответов: 12
Профиль | | #2
Добавлено: 08.10.09 21:26
AWP Понятно, спасибо.
у меня в Form_Load есть такая строка: drawGrafField.CreateGraphics.PageUnit = GraphicsUnit.Millimeter, но разницы я что-то не заметил, как были координаты в пикселях, так и остались.
Номер ответа: 3
Автор ответа:
topograf
Вопросов: 3
Ответов: 12
Профиль | | #3
Добавлено: 09.10.09 23:36
спасибо за ответы))))
Но все-же хотелось бы знать, как обращаться с GraphicsUnit? Есть в .net возможность отображать координаты точек в нужной системе координат или нет? Если да, то как это осуществить? Желательно примеры. Ы-ы-ы.
Очень нужно.
Номер ответа: 4
Автор ответа:
topograf
Вопросов: 3
Ответов: 12
Профиль | | #4
Добавлено: 10.10.09 00:28
нашёл на сайте такую процедуру:
Public Sub InitializeMatrix()
_matrix = New Matrix()
_matrix.Translate(_offsetX, _offsetY)
_matrix.Scale(1, -1)
_matrix.Scale(_scaleX, _scaleY)
End Sub
но у меня она просто увеличивает, или уменьшает все объекты, как лупа(т.е. если линия была толщиной 1 пкс, то при _scale=10? соответственно увеличивает и толщину линии, шрифт и проч.
может я конечно не правильно этим всем пользуюсь? Тогда можно пример, как правильно пользоваться?