私はC#を初めて使用しており、OOPとクラスを使用しようとしています。私は単純な正弦波と軸線(X軸)を描こうとしています。私は "main - Form1"に似たコードを持っていますが、クラス内からフォームに描画することはできません。それは何も描かない!コードがコンパイルされます。クラス内からラインを描画できない - なぜ描画されませんか?
私には何が欠けていますか?私はもっとうまくいくことができますか?
私は、ボタンのクリックからクラスを呼び出す - ここ
Drawclick(object sender, EventArgs e)
{ DrawSine Sine1 = new DrawSine(950);
}
は、このフォームに何かを描画することができるが、あなたがあるため、すぐにLoadイベントの後に見ることができないクラス
class DrawSine:Form1
{
private float sinex=0;//set up variables for sine
private float countx = 0;
private float siney = 0;
private float sinex1=0;
private float siney1=0;
public float offset;
public float scalex;
public float scaley;
public DrawSine(int widthG)
{
Graphics Graphsine = this.CreateGraphics();//declare sine
Graphics Graphline = this.CreateGraphics();//declare axis
Pen Graphpen = new Pen(Brushes.Black, 1.0F);
Graphline.DrawLine(Graphpen, 0, 200, widthG, 200);//draw line
0,200 to end of form,200
int WidthG = widthG;
do //draw sine wave left to right
{
sinex += scalex * 6.28f/widthG;
siney = (float)Math.Sin(sinex);
Graphsine.DrawLine(Graphpen, sinex1, siney1 + offset,
countx, siney * 100 + offset);
sinex1 = sinex;
sinex1 = siney * 100;
countx += 1;
}
while (countx <= widthG);
}
}
はcreateGraphicsのは絶対に使用しないでください、代わりにPaintイベントを使用します。現在、ウィンドウが表示される前に、コンストラクタ内のピクセルが飛び散っています。 Sine1.Show()も呼び出されないので、決して表示されません。 Windowsフォームの入門書である間違った点がたくさんありますが、間違いなくバグと戦うことになります。 –