none
Помогите код поравить, вроде всё правильно ток график всё равно не рисуется!!! RRS feed

  • Вопрос

  • float

     

     

    W = panel1.Width, H = panel1.Height;//длинна и высота

     

     

    float polovinaW = W / 2, polovinaH = H / 2;

     

     

    Graphics gr = e.Graphics;

     

     

    Pen p = new Pen(Color.Black, 4);

     

     

    Pen cd = new Pen(colorDialog1.Color, 5);

    p.EndCap = System.Drawing.Drawing2D.

     

    LineCap.ArrowAnchor;

    gr.DrawLine(p, polovinaW, H, polovinaW, 0);

    gr.DrawString(

     

    "X", SystemFonts.MenuFont, Brushes.Black, 290, polovinaH);

    p.EndCap = System.Drawing.Drawing2D.

     

    LineCap.ArrowAnchor;

    gr.DrawLine(p, 0, polovinaH, W, polovinaH);

    gr.DrawString(

     

    "Y", SystemFonts.MenuFont, Brushes.Black, 150, 0);

    gr.DrawString(

     

    "O", SystemFonts.MenuFont, Brushes.Black, 150, 150);

     

     

    Bitmap im = new Bitmap( Width, Height);

     

     

    for (double x = 0; x < 2 * Math.PI; x += 0.0001);

    {

     

     

    double y = Math.Sin(x);

     

     

    int u = (int)(x * im.Width / (2 * Math.PI));

     

     

    int v = 50 - (int)(y * im.Height / 2);

    im.SetPixel(u, v,

     

    Color.Brown);

    }

    e.Graphics.DrawImage(im, 260, 150, 100, 100);

    }

    25 ноября 2010 г. 16:26

Ответы

  • 1) Убрать точку с запятой после объявления цикла:

    for (double x = 0; x < 2 * Math.PI; x += 0.0001); // <- вот тут
    

    2) Код падает на строке 

    im.SetPixel(u, v, Color.Brown);
    

     

    с ошибкой ArgumentOutOfRangeException Parameter must be positive and < Height. Parameter name: y.  Значение v должно быть положительным и меньше высоты битмапа, ищите ошибку в расчетах v

    int v = (50 - (int)(y * im.Height / 2));
    

     


    Для связи [mail]
    • Помечено в качестве ответа Gomerchik 26 ноября 2010 г. 16:49
    26 ноября 2010 г. 5:31

Все ответы

  • 1) Убрать точку с запятой после объявления цикла:

    for (double x = 0; x < 2 * Math.PI; x += 0.0001); // <- вот тут
    

    2) Код падает на строке 

    im.SetPixel(u, v, Color.Brown);
    

     

    с ошибкой ArgumentOutOfRangeException Parameter must be positive and < Height. Parameter name: y.  Значение v должно быть положительным и меньше высоты битмапа, ищите ошибку в расчетах v

    int v = (50 - (int)(y * im.Height / 2));
    

     


    Для связи [mail]
    • Помечено в качестве ответа Gomerchik 26 ноября 2010 г. 16:49
    26 ноября 2010 г. 5:31
  • Всё спасибо  ошибку в координатах исправил! и точку с запятой убрал <---глупая ошибка не заметил!!!) 

    26 ноября 2010 г. 17:26