2015-11-03 5 views
1

Я не знаю, что передать моему методу, чтобы правильно нарисовать мой круг. Вот мой код:Как называть «рисовать круг» из метода рисовать внутри рамки изображения

private void Circle() 
    { 
     Graphics g1 = e.Graphics; 
     Pen p1 = new Pen(Color.Black); 
     g1.DrawEllipse(p1, 12, 12, 50, 50); 
    } 

    private void pictureBox1_Paint(object sender, PaintEventArgs e) 
    { 
     Circle(); 
    } 

Это не работает, причина нет «е».

Если я переписать свой код из

Graphics g1 = e.Graphics; 

в

Graphics g1 = this.CreateGraphics(); 

Он будет рисовать круг, но не в PictureBox. Мне нужен круг, чтобы быть внутри рамки.

+2

Вы можете передать 'e' в качестве аргумента –

ответ

5

Если ваш метод требует ссылки на PaintEventArgs, то почему бы не поставить его один? Что-то вроде этого:

private void Circle(PaintEventArgs e) 
{ 
    Graphics g1 = e.Graphics; 
    Pen p1 = new Pen(Color.Black); 
    g1.DrawEllipse(p1, 12, 12, 50, 50); 
} 

private void pictureBox1_Paint(object sender, PaintEventArgs e) 
{ 
    Circle(e); 
} 

Это позволит другим обработчикам событий рисования использовать этот метод для своих собственных элементов управления.

1

Чтобы получить ссылку на объект Graphics, вы можете указать это через параметры. Как

private void Circle(Graphics g) 
{ 
    Pen p1 = new Pen(Color.Black); 
    g.DrawEllipse(p1, 12, 12, 50, 50); 
} 

private void pictureBox1_Paint(object sender, PaintEventArgs e) 
{ 
    Graphics myg = e.Graphics; 
    Circle(myg); 
} 
Смежные вопросы