2012-04-16 2 views
0

Вот как я думаю, что график рассеяния должен быть построен на C# (на достаточно высоком уровне абстракции).Построение класса рассеянного экрана

  1. Создать пустое изображение
  2. Используйте TextRenderer рисовать метки осей и весов (по горизонтали не будет так тривиально, но все равно будет управляемым).
  3. Нарисуйте несколько линий, которые будут тиками по осям и линиям самих осей
  4. Нарисуйте несколько кругов (не 100% от того, как это сделать, но это не может быть слишком сложно) на основе точек перечисленных в некоторых наборах данных.
  5. Показать изображение в картинкеBox.
  6. Создайте функцию, которая будет вызываться в MouseHover, которая отобразит некоторые детали об этой точке в подсказке.

Это даже имеет смысл? Использую ли я неправильные элементы управления для работы? Есть ли какой-нибудь код в .NET, который будет делать большую часть этого уже (класс диаграммы кажется хорошим только для гистограмм)? Есть ли способ получить доступ к возможностям построения Excel из C#?

Для меня все это кажется надуманным, и я был бы признателен за вклад в то, как лучше спроектировать класс рассеянного графика.

+1

Это определенно неверно. Элементы управления диаграммы Microsoft хороши только для гистограмм. Я бы посмотрел на образцы: http://archive.msdn.microsoft.com/mschart –

+0

@mikez, спасибо за то, что привлек это к моему вниманию, опубликуйте его как ответ, и я буду отмечать его как правильное. – soandos

ответ

2

Библиотека Microsoft Chart Controls может делать гораздо больше, чем гистограммы. Он включен в структуру .NET 4, но также доступен как отдельный download для .NET 3.5 SP1. Образцы доступны here и демонстрируют большинство основных функций.

1

Нет, это имеет смысл. Я действительно не знаю, как это делают «профессионалы», но когда вам нужен быстрый разброс, это очень важно, как вы это сделаете. Некоторые вещи, которые следует иметь в виду:

  • Вы хотите, чтобы метод Draw() располагался сверху и преобразовывал координаты точек данных. Это связано с тем, что в конечном итоге вам понадобится масштабирование и панорамирование. Взятие страницы из программирования 3D-графики и просто использование явной матрицы преобразования (есть несколько в XNA), вероятно, сэкономит вам массу неприятностей.
  • Возможно, у вас есть общая функция «draw point», которая вызывает специализированные подпрограммы для рисования отдельных точек, поэтому вы можете легко переключаться между различными типами точек (крест, круг, точка, квадрат, алмаз и т. Д.)). Также цвет.
  • Как вы собираетесь обрабатывать очень большое количество точек данных? Это может быстро измельчить плохо продуманный API диаграмм, чтобы остановить мой опыт.
Смежные вопросы