Предполагая, что вы хотите создать Heatmap, который выглядит примерно мои примеры here или here я боюсь, что с помощью Chart
управления для этой цели не может быть лучшим выбором.
Хотя это не невозможно использовать Charttype Point
, чтобы создать его, он будет иметь несколько проблем ..
Вы спросили о DataBinding
сделать все это более эффективным.
Вы используете списки списка DataPoints
но:
DataBinding
только связывает значения диаграммы, не готовые DataPoints
- Даже списки значений имеют свои limitations:
При использовании нестандартных источников данных, таких как списки или массивы, вы можете связывать только значения Y, независимо от типа метода привязки данных б/у. Это связано с тем, что столбцы не могут быть указаны для значений X и других свойств диаграммы, например Tooltip.
Это не может быть большой проблемой, если ваши X-значения не важны.
Ну, есть many ways использовать DataBinding
с Chart
, как на Chart
и на Series
уровнях.
И еще один Points.DataBind перегрузки, что looks как если было бы целесообразно, чтобы связать цвета, как это поддерживает расширенные свойства:
Points.DataBind
же, как и выше, плюс:
Поддерживает привязку для расширенных свойств диаграммы, таких как всплывающие подсказки.
Таким образом, связывание с DataView
DataTable DT = new DataTable("data");
DT.Columns.Add("xField", typeof(int));
DT.Columns.Add("yFields", typeof(int));
DT.Columns.Add("tipp", typeof(string));
DT.Columns.Add("kolor", typeof(Color));
DataRow row = DT.NewRow();
row["xField"] = 1; row["yFields"] = 1; row["tipp"] = "red"; row["kolor"] = Color.Red;
DT.Rows.Add(row); // ...etc...
DataView DV = new DataView(DT);
chart1.DataSource = DV;
должен работать так:
someSeries.Points.DataBind(DV, "xField", "yFields",
"MarkerColor=kolor,Color=kolor,Tooltip=tipp,Label=tipp");
Однако, в то время как Labels
и ToolTips
действительно получить связаны, то DataPoint.Color
не:
Это неутешительно; ведь DataPoint.Color - это атрибут bindable
. Но это игнорируется.
Here список поддерживаемых свойств:
Список этих свойств являются следующим: AxisLabel, подсказка, этикетки, LegendText, LegendTooltip и CustomPropertyName (имя пользовательского свойства).
Заключение: AFAIK DataBinding
будет не позволяют установить цветныеDataPoints
. Чтобы сделать ваш код более эффективным с помощью элемента управления Chart
, вы можете просто попробовать использовать chart1.SuspendLayout
и chart1.ResumeLayout
, чтобы сделать установку в одном.
Однако я бы вместо этого рассмотрел возможность использования элемента управления Chart в первую очередь.
Ссылки на двух примерах, которые я дал в первом абзаце показаны два альтернативных способа:
Первый все о рисования Heatmap в GDI +. Это действительно тривиально и очень эффективно. (Детали в сообщении не связаны с вашей проблемой ..) Для простого масштабирования я предлагаю рисовать в Bitmap
, который вы назначаете Panel
или PictureBox
; создайте его в ClientSize
и установите Panel.ImageLayout
(или PictureBox.SizeMode
) как Stretch
.
Второй пример использует Cells
DataGridView
как большие «пиксели» для тепловой карты ...
Просмотреть вторую ссылку для способа создания приятного List<Color>
!
Какой тип диаграммы вы используете? Это поможет лучше понять проблему, чтобы увидеть, как выглядит результат. – TaW
Сейчас я просто использую диаграмму точек, но мне нужно потратить некоторое время на выяснение, какой стиль лучше всего подходит для карты тепла. Я могу опубликовать снимок экрана текущего вида, как только вернусь на свой компьютер. – Ian
Вы решили свои проблемы? – TaW