2011-10-30 11 views
1

何らかの理由で、私のコードはグラフの2番目の点をプロットしません。私は、Windowsフォーム上の2つの異なるテキストボックスからx、y値を取得しています。 x、y座標を含むクラスがあります。新しい値がテキストボックスに入力されるたびに、新しいオブジェクトを作成し、2つの新しい座標をオブジェクトに追加し、そのオブジェクトをリストに追加します。点をプロットする

最後に、私はオブジェクトのリストをループし、各x、y座標をプロットしようとします。なぜすべてのポイントを表示していないのですか?あなたはすべてのITEのために再描画、なぜ私は理解していない

をForm1

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace PlotGraph 
{ 
public partial class Form1 : Form 
{ 
    private List<TheList> allValuesList = new List<TheList>(); 

    private int x = 240; // the position of the X axis 
    private int y = 0; // the position of the Y axis 
    public static Bitmap bmp = new Bitmap(360, 390); 
    public static Graphics g = Graphics.FromImage(bmp); 

    public Form1() 
    { 
     InitializeComponent(); 
     this.SetStyle(ControlStyles.ResizeRedraw, true); 
     g.DrawLine(new Pen(Color.Red, 2), 5, 5, 5, 250); 
     g.DrawLine(new Pen(Color.Red, 2), 5, 250, 300, 250); 
    } 

    private void btnPlotGraph_Click(object sender, EventArgs e) 
    { 
     TheList latestCoordinate = new TheList(); 
     if (textBoxX != null) 
     { 
      latestCoordinate.xCoordinate = Int16.Parse(textBoxX.Text); 

     } 

     if (textBoxY != null) 
     { 
      latestCoordinate.yCoordinate = Int16.Parse(textBoxY.Text); 
     } 

     allValuesList.Add(latestCoordinate); 
     plotTheValues(allValuesList); 
    } 

    public void plotTheValues(List<TheList> allValuesList) 
    { 
     Int16 x1 = 0; 
     Int16 y1 = 0; 
     foreach (TheList val in allValuesList) 
     { 
      x1 = val.xCoordinate; 
      y1 = val.yCoordinate; 
      g.DrawString("X", new Font("Calibri", 12), new SolidBrush(Color.Black), y + y1, x - x1); 

      PictureBox display = new PictureBox(); 
      display.Width = ClientRectangle.Width; 
      display.Height = ClientRectangle.Height; 
      this.Controls.Add(display); 
      display.Image = bmp; 
     } 
    } 
} 

}

クラスTheList

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace PlotGraph 
{ 
    public class TheList 
    { 
     public Int16 xCoordinate = -1; 
     public Int16 yCoordinate = -1; 
    } 
} 
+0

あなたはすでに回答を受け入れているので、あなたの質問を残してください。その内容を消去すると、その答えは役に立たなくなります。 – BoltClock

答えて

2

:ここ

は私のコードです同じ位置に...

public void plotTheValues(List<TheList> allValuesList) 
{ 
    foreach (TheList val in allValuesList) 
    { 
     Int16 x1 = val.xCoordinate; 
     Int16 y1 = val.yCoordinate; 
     g.DrawString("X", 
        new Font("Calibri", 12), 
        new SolidBrush(Color.Black), 
        y + y1, x - x1); 
     g.DrawImage(bmp,...); // It's really faster and memory saving 
     // Are you sure you don't need to plot the image bmp 
     // at item coordinates instead of always at the same position? 
    } 
} 
+0

うわー...私はとてもばかげている。ありがとう、あなたは間接的に私の問題を笑に解決した。 – BigBug

+0

@BlueMonster:間接?とにかく、私はあなたのトラブルを解決するのを助けてくれてうれしいです! :) – Marco

+0

ああ!あなたは正しい:o)あなたは私のQに直接答えた。再度、感謝します.. – BigBug

1

リスト中のMと同じ画像(BMP)、私はあなたのコンストラクタに表示ロジックの一部を移動する必要があると思う:

private int x = 240; // the position of the X axis 
    private int y = 0; // the position of the Y axis 
    public Bitmap bmp; 
    public Graphics g; 
    PictureBox display = new PictureBox(); 

    public Form1() 
    { 
     InitializeComponent(); 
     this.SetStyle(ControlStyles.ResizeRedraw, true); 

     bmp = new Bitmap(360, 390); 
     g = Graphics.FromImage(bmp); 

     g.DrawLine(new Pen(Color.Red, 2), 5, 5, 5, 250); 
     g.DrawLine(new Pen(Color.Red, 2), 5, 250, 300, 250); 

     display = new PictureBox(); 
     display.Width = ClientRectangle.Width; 
     display.Height = ClientRectangle.Height; 

     this.Controls.Add(display); 
    } 

その後plotTheValuesは次のようになりますこれは:

public void plotTheValues(List<Point> allValuesList) 
    { 
     foreach (Point val in allValuesList) 
     { 
      g.DrawString("X", new Font("Calibri", 12), new SolidBrush(Color.Black), x - val.X, y - val.Y); 
     } 

     display.Image = bmp; 
    } 
関連する問題