2016-07-04 8 views
0

MySqlテーブルのデータを表示するための単純なウィンドウフォームを作成しました。MySqlデータからダイヤルとグラフを作成する

私が知りたいのは、いくつかのダイヤルと履歴グラフを使ってこのデータをグラフィカルに表示する方法です。

これはこれまでのものです。ボタンをクリックすると、2つのテキストボックスにデータが読み込まれて表示されます。もう一度ボタンをクリックすると停止します。

私は、折れ線グラフを追加する方法を働いていた、まだ「ダイヤルだけではなくテキストボックスを追加する方法を知っておく必要があります...

があり

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using MySql.Data.MySqlClient; 

namespace WindowsFormsApplication11 
{ 
    public partial class Form1 : Form 
    { 
     MySqlConnection mcon = new MySqlConnection("Server=www.inshome.net.au;Port=3306;Database=wordpress;Uid=root;password=********"); 
     MySqlCommand mcd; 
     MySqlDataReader mdr; 
     string s; 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void getTemp_Click(object sender, EventArgs e) 
     { 
      // Toggle the timer's enabled state 
      timer1.Enabled = !timer1.Enabled; 
     } 

     private void timer1_Tick(object sender, EventArgs e) 
     { 
      try 
      { 
       mcon.Open(); 
       s = "SELECT time, dht22temp, dht22humidity FROM shed ORDER BY time DESC LIMIT 1"; 
       mcd = new MySqlCommand(s, mcon); 
       mdr = mcd.ExecuteReader(); 
       if (mdr.Read()) 
       { 
        shedTemp.Text = mdr.GetString("dht22temp"); 
        shedHumidity.Text = mdr.GetString("dht22humidity"); 
        aGauge1.Value = float.Parse(mdr.GetString("dht22temp")); 
        aGauge2.Value = float.Parse(mdr.GetString("dht22humidity")); 
        this.chart1.Series["Temp"].Points.AddXY(mdr.GetString("time"), mdr.GetString("dht22temp")); 
        this.chart2.Series["Humidity"].Points.AddXY(mdr.GetString("time"), mdr.GetString("dht22humidity")); 
       } 
       else 
       { 
        MessageBox.Show("NO DATA"); 
       } 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
      finally 
      { 
       mdr.Close(); 
       mcon.Close(); 
      } 
     } 
    } 
} 
+0

参照[ここ](http://stackoverflow.com/questions/767999/random-number-generator-only-generating-one-random-:

は、このような値を使用し、何かを変更するにはnumber?rq = 1)回転した線を描く方法、または円グラフを考える方法。あなたが疑問に思っていること以外は、あまりにも広いです、私は恐れています! – TaW

+0

ありがとう、病気をよく説明しようとする。私は、スピードメーターのような2つのダイヤルを持っていて、現在の(この場合は)温度と湿度を表示している針が動きたいということです。お役に立てれば。 –

答えて

0

... aGaugeを使用して、それを働きました

だから、あなたはライブラリを探したり、グラフィカルではないものを見つけたりする必要があります。テキスト表示がきれいになっているか、まったくひねられていますか?Pie Chartです。それとも自分で作る必要がありますか?

これは、あなたが始める必要がある例です。

enter image description here

class DialLabel : Label 
{ 
    public DialLabel() 
    { 
     AutoSize = false; 
     NeedleColor = Color.Red; 
     NeedleWidth = 3f; 
    } 

    public Color NeedleColor { get; set; } 
    public float NeedleWidth { get; set; } 
    public string Format { get; set; } 

    public decimal MaxValue { get; set; } 
    public decimal Value { get; set; } 
    float angle { get { return 180f/100f * (float)(MaxValue - Value); } } 

    protected override void OnPaint(PaintEventArgs e) 
    { 
     Point center = new Point(Width/2, (Height - 25)); // 25 pixels for text 
     Rectangle textbox = new Rectangle(1, Height - 25, Width, 25); 
     TextRenderer.DrawText(e.Graphics, Value.ToString(Format), Font, 
           textbox, ForeColor, BackColor); 
     float nx = Width/2f + 
        (Width/2f - 2) * (float)Math.Cos(angle * Math.PI/180f); 
     float ny = (Height - 25) - 
        (Width/2f - 2) * (float)Math.Sin(angle * Math.PI/180f); 

     using (Pen pen = new Pen(NeedleColor, NeedleWidth)) 
      e.Graphics.DrawLine(pen, center.X, center.Y, nx, ny); 
    } 
} 

ダイヤルラベルを使用すると、基本的なスタイリングのために使用できるいくつかのプロパティを公開します。 TextString.Emptyに設定し、素敵なImageを選んでください。

"##0 km/h"から Formatを設定し、白に ForeColorを変更した場合は

と透明にBackColor

あなたは、あなたのプロジェクトにクラスを追加してコンパイルし、フォームにツールボックスの上からそれを追加し、それを使用するには..直接

をあなたは、コードを研究している他のすべての多くの詳細を変更することができます。

private void trackBar1_Scroll(object sender, EventArgs e) 
{ 
    dialLabel1.Value = trackBar1.Value; 
    dialLabel1.Invalidate(); 
} 
+0

私はこの非常にクールな、感謝のヒープが大好きです。 Visual Studio 2015でプロジェクトにクラスを追加するにはどうすればいいですか?文字通り、VSとC#の使用を2日前に開始しました。急な学習曲線でしたが、それがうまくいくと多くの楽しみと非常に有益です。他の誰かを使うのではなく、自分のクラスを作る方法を学ぶのは良いでしょう。私が見つけたaGauge.dllを持っているので、これはうまく動作し、私のような初心者にとっては簡単でした。 –

+0

コードをプロジェクトに追加する新しいクラスにコピーします。 (プロジェクトを右クリック:Add-New-Class)DialLabelという名前を付け、WinformsとDrawingに2つのusing句を追加します。 (フォームコードを参照してください)。コンパイルすると、ツールボックスに表示されます。今度はそれをフォームにドロップすることができます。 – TaW

+0

または最後のcurly__の前にフォームクラスにコードをコピーすることができます。コンパイルなど。 – TaW

関連する問題