今天跟大家分享一下最近做的一個程序中繪圖功能的實現(xiàn)。
先來看看實現(xiàn)的效果:
具體實現(xiàn)
頁面的設計
繪圖設置頁面的設計如下所示:
4個label控件,控件如下所示:
2個DateEdit控件,控件如下所示:
1個ComboBoxEdit控件,控件如下所示:
1個CheckedListBoxControl控件,控件如下所示:
1個SimpleButton控件,控件如下所示:
繪圖展示的頁面設計如下:
只有一個ChartControl控件,控件如下所示:
代碼
繪圖的數(shù)據(jù)是之前文章提過的使用C#實現(xiàn)爬蟲獲取網(wǎng)頁數(shù)據(jù)得到的數(shù)據(jù),如下所示:
這些數(shù)據(jù)中只用了最低溫度、最高溫度、最低能見度、最高能見度來繪圖。
第一步實現(xiàn)加載窗體時獲取ComboBoxEdit與CheckedListBoxControl中的內容:
public void init()
{
? ? // 為下拉框框賦值
? ? var comboBoxItems = db.Queryable<WeatherData>().Select(x => x.StationName).Distinct().ToList();
? ? comboBoxEdit1.Properties.Items.AddRange(comboBoxItems);
? ? comboBoxEdit2.Properties.Items.AddRange(comboBoxItems);
?
? ? // 多選框的設置
? ? checkedListBoxControl1.CheckOnClick = true; // 設置為單擊即選中或取消選中
?
? ? // 多選框中的值
? ? string[] indexs = { "最低溫度(℃)", "最高溫度(℃)", "最低可見度(km)", "最高可見度(km)" };
? ? // 多選框添加項
? ? var checkedItems = new List<CheckedListBoxItem>();
? ? foreach (var index in indexs)
? ? {
? ? ? ? var checkedItem = new CheckedListBoxItem();
? ? ? ? checkedItem.Value = index;
? ? ? ? checkedItems.Add(checkedItem);
? ? }
? ? checkedListBoxControl1.Items.AddRange(checkedItems.ToArray());
?
}
private void ToolbarForm1_Load(object sender, EventArgs e)
{
? ? init();
}
獲取不同的站名:
var comboBoxItems = db.Queryable<WeatherData>()
? ? ? ? ? ? ? ? ? ? ? .Select(x => x.StationName).Distinct().ToList();
為下拉框添加值:
?comboBoxEdit1.Properties.Items.AddRange(comboBoxItems);
為多選框添加值:文章來源:http://www.zghlxwxcb.cn/news/detail-747863.html
? ? // 多選框的設置
? ? checkedListBoxControl1.CheckOnClick = true; // 設置為單擊即選中或取消選中
?
? ? // 多選框中的值
? ? string[] indexs = { "最低溫度(℃)", "最高溫度(℃)", "最低可見度(km)", "最高可見度(km)" };
? ? // 多選框添加項
? ? var checkedItems = new List<CheckedListBoxItem>();
? ? foreach (var index in indexs)
? ? {
? ? ? ? var checkedItem = new CheckedListBoxItem();
? ? ? ? checkedItem.Value = index;
? ? ? ? checkedItems.Add(checkedItem);
? ? }
? ? checkedListBoxControl1.Items.AddRange(checkedItems.ToArray());
開始繪圖按鈕的點擊事件代碼:文章來源地址http://www.zghlxwxcb.cn/news/detail-747863.html
private void simpleButton3_Click(object sender, EventArgs e)
{
? ? var date1 = dateEdit3.EditValue;
? ? var date2 = dateEdit4.EditValue;
? ? var name = comboBoxEdit2.Text;
? ? var checkedItems = checkedListBoxControl1.CheckedItems;
? ? if (date1 != null && date2 != null && name != "" && checkedItems.Count != 0)
? ? {
? ? ? ? var startDate = Convert.ToDateTime(date1);
? ? ? ? var endDate = Convert.ToDateTime(date2);
? ? ? ? var list = db.Queryable<WeatherData>().Where(x => x.Date >= startDate && x.Date < endDate.AddDays(1) && x.StationName == name).ToList();
? ? ? ? // 清空之前的圖
? ? ? ? if (chartControl2.Series.Count > 0)
? ? ? ? {
? ? ? ? ? ? chartControl2.Series.Clear();
? ? ? ? }
? ? ? ? // 選中幾個指標就畫幾個圖
? ? ? ? foreach (CheckedListBoxItem item in checkedItems)
? ? ? ? {
? ? ? ? ? ? var indexKey = item.Value.ToString();
? ? ? ? ? ? switch (indexKey)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? case "最低溫度(℃)":
? ? ? ? ? ? ? ? ? ? Series series1 = new Series("最低溫度(℃)", ViewType.Line);
? ? ? ? ? ? ? ? ? ? foreach (var dataPoint in list)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? series1.Points.Add(new SeriesPoint(dataPoint.Date, dataPoint.Tem_Low));
?
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? chartControl2.Series.Add(series1);
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case "最高溫度(℃)":
? ? ? ? ? ? ? ? ? ? Series series2 = new Series("最高溫度(℃)", ViewType.Line);
? ? ? ? ? ? ? ? ? ? foreach (var dataPoint in list)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? series2.Points.Add(new SeriesPoint(dataPoint.Date, dataPoint.Tem_High));
?
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? chartControl2.Series.Add(series2);
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case "最低可見度(km)":
? ? ? ? ? ? ? ? ? ? Series series3 = new Series("最低可見度(km)", ViewType.Line);
? ? ? ? ? ? ? ? ? ? foreach (var dataPoint in list)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? series3.Points.Add(new SeriesPoint(dataPoint.Date, dataPoint.Visibility_Low));
?
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? chartControl2.Series.Add(series3);
到了這里,關于在winform中繪圖的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!