Пожалуйста, помогите мне построить график с живой диаграммой с помощью C # WPF.C#

Место общения программистов C#
Ответить
Anonymous
 Пожалуйста, помогите мне построить график с живой диаграммой с помощью C # WPF.

Сообщение Anonymous »

Я работаю над созданием диаграммы и ищу БД с помощью C# WPF.
Мне удалось создать диаграмму и поиск по БД.
Можно ли создать график этой фигуры на реальном графике?
Могу ли я прочитать значение и распечатать его посередине в зависимости от времени?
Изображение

Пожалуйста, введите описание изображения.
Я делаю это прямо сейчасЭто не та форма, которая мне нужна, потому что она выглядит как нижняя.
ChatGPT возможен, но я не думаю, что это возможно, потому что линия автоматически начинается с левого или правого конца. Возможно ли это?
Изображение
Даже если я прочитаю данные позже, я не знаю как вставить значения через раз
мне нужно 5 строк
public List GetSensingData(int _iCount)
{
List dataPoints = new List();
var query = $"SELECT {sSensorId}, {sSensorTime}, {sSensorValue} FROM {sSensorTable} ORDER BY {sSensorTime} DESC LIMIT {_iCount}";

using (var connection = new MySqlConnection(sConnectionString))
{
connection.Open();
using (var command = new MySqlCommand(query, connection))
{
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
dataPoints.Add(new SensingDataPoint
{
ID = reader.GetInt32(0), // ID 컬럼은 인덱스 0
Time = reader.GetDateTime(1), // Time 컬럼은 인덱스 1
Value = reader.GetDouble(2) // Value 컬럼은 인덱스 2
});
}
}
}
}
return dataPoints;
}

public class SensingDataPoint
{
public int ID { get; set; }
public DateTime Time { get; set; }
public double Value { get; set; }
}
// 실시간 데이터 업데이트 메서드
private void vUpdateChartData()
{
// X축 레이블 설정
if (SelectedData == MainViewModel.DataSelection.Value)
{
// 각 ID의 센서 데이터를 최신 데이터로 가져오기
var SensorDataPoints = dbHelper.GetSensingData(iReadCount);

// UI 스레드에서 차트 업데이트
Application.Current.Dispatcher.Invoke(() =>
{
ID1SensorValues.Clear();
ID2SensorValues.Clear();
ID3SensorValues.Clear();
ID4SensorValues.Clear();
ID5SensorValues.Clear();
vUpdateSeries(SensorDataPoints);

});

}
}
private void vUpdateSeries(List dataPoints)
{
// 기존 값 초기화
foreach (var point in dataPoints)
{
if (selectedData == DataSelection.Value)
{
TimeLabels.Add(point.Time.ToString("HH:mm:ss"));
switch (point.ID)
{
case 1:
ID1SensorValues.Add(point.Value);
ID2SensorValues.Add(0);
ID3SensorValues.Add(0);
ID4SensorValues.Add(0);
ID5SensorValues.Add(0);
break;
case 2:
ID1SensorValues.Add(0);
ID2SensorValues.Add(point.Value);
ID3SensorValues.Add(0);
ID4SensorValues.Add(0);
ID5SensorValues.Add(0);
break;
case 3:
ID1SensorValues.Add(0);
ID2SensorValues.Add(0);
ID3SensorValues.Add(point.Value);
ID4SensorValues.Add(0);
ID5SensorValues.Add(0);
break;
case 4:
ID1SensorValues.Add(0);
ID2SensorValues.Add(0);
ID3SensorValues.Add(0);
ID4SensorValues.Add(point.Value);
ID5SensorValues.Add(0);
break;
case 5:
ID1SensorValues.Add(0);
ID2SensorValues.Add(0);
ID3SensorValues.Add(0);
ID4SensorValues.Add(0);
ID5SensorValues.Add(point.Value);
break;
default:
break;
}
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... -sharp-wpf
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»