Страница 1 из 1

рисование на форме gdi+

Добавлено: 22 сен 2009, 18:35
BattleMage
вот что я хочу сделать: по нажатию на кнопку нарисовать график. текст такой:

Код: Выделить всё

private void button1_Click(object sender, EventArgs e)
 {
   Graphics g = e.Graphics;
   g.Clear(Color.White);
   int u = 300 / i;
   int k;
   for (k = 0; k < (i - 1); k++) g.DrawLine(new Pen(Brushes.Red), 115 + (k + 1) * u, 400 - uderzh[k], 115 + (k + 2) * u, 400 - uderzh[k + 1]);
}
появляется следующая ошибка:

Код: Выделить всё

Ошибка     1     "System.EventArgs" не содержит определения для "Graphics" и не был найден метод расширения "Graphics", принимающий тип "System.EventArgs" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку)     c:\Documents and Settings\BattleMage\Мои документы\Visual Studio 2008\Projects\dyakov_2\dyakov_2\Form1.cs     90     28     dyakov_2
мне кажется у EventArgs e нет попросту такого свойства Graphics


когда было такое событие, всё работало хорошо, но т.к. не устараивает постановку моей задачи, то и толка от этого кода тоже не много:

Код: Выделить всё

private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            g.Clear(Color.White);
            int u = 300 / i;
            int k;
            for (k = 0; k < (i - 1); k++) g.DrawLine(new Pen(Brushes.Red), 115 + (k + 1) * u, 400 - uderzh[k], 115 + (k + 2) * u, 400 - uderzh[k + 1]);
        }
значения всех переменных корректны и массивы тоже заполнены. помогите плиз, чтобы именно через кнопку было. я новичок, ещё не совсемы особенностями студии познакомился
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
вот нашёл какой-то код, через дескриптор

Код: Выделить всё

Graphics g = Graphics.FromHwnd(this.Handle);
так не прокатит? подскажите самый оптимальный способ. может вообще другую функцию использовать, не DrawLine...

Re: рисование на форме gdi+

Добавлено: 22 сен 2009, 18:47
Newbie
>мне кажется у EventArgs e нет попросту такого свойства Graphics
Еще бы у него оно было. Он клик абсолютно не для этого создан и получать контекст было бы глупо.

Я как то делал график на шарпе(примитивный), надо было проверять правильность расчета. Я делал примерно следующее:
class graph : control
{
...
private override OnPaint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
//тут рисую, иногда еще лучше вызыват base.OnPaint(e);
}
...
}

а при клике на кнопку вызываю
graph .Refresh(); //тут вызовется событие OnPaint в котором и отрисуется что надо

Re: рисование на форме gdi+

Добавлено: 22 сен 2009, 22:23
BattleMage
аа. попробую так..