Система координат в С#

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

Я не уверен, какой элемент подходит для этого (Panel, PictureBox,....).

Требования:

  • Я хочу увеличивать и уменьшать масштаб
  • двигаться влево/вправо/вниз/вверх туда
  • Я получаю значения от микроконтроллера и хочу рисовать их в режиме реального времени.

Я использую Visual Studio 2012. Я не хочу использовать другие dll/библиотеки или программы от других людей.

Спасибо

PS: Может быть, простое руководство было бы здорово.


person user2261524    schedule 18.04.2013    source источник
comment
Вы думаете о 2D-графике или 3D?   -  person Kasyx    schedule 18.04.2013
comment
Только в 2D. 3D не надо :)   -  person user2261524    schedule 18.04.2013


Ответы (1)


Я сделал то же самое, используя простой Canvas в WPF. Поэтому я предлагаю вам сменить платформу на WPF. Поведение увеличения/уменьшения можно выполнить с помощью ScaleTransform, а перемещение влево/вправо/... можно выполнить с помощью TranslateTransform. Нет необходимости в какой-либо библиотеке, вы можете использовать геометрические типы int wpf, такие как Path. И установите свойство RenderTransform каждого пути к этим функциям преобразования.

person Hossein Narimani Rad    schedule 18.04.2013
comment
Почему WPF, каковы преимущества по сравнению с формой Windows? - person user2261524; 18.04.2013
comment
@ user2261524 Векторный рендеринг. Поддержка преобразований масштаба/перевода. Поддержка типов данных, таких как Point, Path, PathGeometry, StreamGeometry. Поддерживайте анимацию, чтобы вы могли создавать интерактивные карты и ... - person Hossein Narimani Rad; 18.04.2013
comment
Итак, вы использовали Canvas и нарисовали там ось координат? - person user2261524; 18.04.2013
comment
@ user2261524 Да. Я использую Canvas и рисую на нем полигоны, линии и даже изображения. Но я не добавляю ось, потому что она мне не нужна, однако это возможно. - person Hossein Narimani Rad; 18.04.2013
comment
Любые идеи, как я могу расширить свою ось координат? Я имею в виду, если я рисую ось X (для времени) от 0 до 100 и получаю значения более 100, возможно ли, что я могу расширить ее для любого значения, которое я получаю? - person user2261524; 18.04.2013
comment
@user2261524 user2261524 вы можете обновлять Canvas после каждого события перемещения. Итак, после каждого события перемещения вы должны рисовать линии. Кроме того, если ваш экстент не слишком велик, вы можете нарисовать две длинные линии, которые охватывают область, которую вы хотите использовать в качестве оси. - person Hossein Narimani Rad; 18.04.2013