Лучший отвечающий
Как передать переменную к методу с переменным PaintEventArgs?

Вопрос
-
Проблемный код:
private void button1_Click(object sender, EventArgs e) { Method(); } private void Method(PaintEventArgs e) { Rectangle rect = new Rectangle(0, 0, 50, 50); Pen pen = new Pen(Color.FromArgb(128, 200, 0, 200), 2); e.Graphics.ResetTransform(); e.Graphics.ScaleTransform(1.75f, 0.5f); e.Graphics.RotateTransform(28, MatrixOrder.Append); e.Graphics.TranslateTransform(150, 150, MatrixOrder.Append); e.Graphics.DrawRectangle(pen, rect); }
Наверное внутри скобок Method нужно чтото написать.
Method();
2 июня 2012 г. 5:16
Ответы
-
Добрый день.
У вас Method всегода рисует на одном и том же элементе управления? Если да, то тогда можете убрать передачу параметров в него (вместо panel1 имя вашего компонента или если вы рисуете на форме напишите this):
private void button1_Click(object sender, EventArgs e) { Method(); } private void Method() { Rectangle rect = new Rectangle(0, 0, 50, 50); Pen pen = new Pen(Color.FromArgb(128, 200, 0, 200), 2); Graphics gr = Graphics.FromHwnd(panel1.Handle); gr.ResetTransform(); gr.ScaleTransform(1.75f, 0.5f); gr.RotateTransform(28, MatrixOrder.Append); gr.TranslateTransform(150, 150, MatrixOrder.Append); gr.DrawRectangle(pen, rect); }
Если же вы хотите этим методом рисовать на разных компонентах , то тогда инициализацию Graphics надо вынести наружу и передавать в метод только ее:
private void button1_Click(object sender, EventArgs e) { Graphics gr = Graphics.FromHwnd(panel1.Handle); Method(gr); } private void Method(Graphics gr) { Rectangle rect = new Rectangle(0, 0, 50, 50); Pen pen = new Pen(Color.FromArgb(128, 200, 0, 200), 2); gr.ResetTransform(); gr.ScaleTransform(1.75f, 0.5f); gr.RotateTransform(28, MatrixOrder.Append); gr.TranslateTransform(150, 150, MatrixOrder.Append); gr.DrawRectangle(pen, rect); }
- Изменено Алексей ЛосевEditor 2 июня 2012 г. 5:33
- Помечено в качестве ответа Ziya Ceferov 2 июня 2012 г. 6:32
2 июня 2012 г. 5:31Отвечающий -
Ну можно вот так сделать:
Graphics gr = Graphics.FromHwnd(this.Handle); Method(new PaintEventArgs(gr, this.ClientRectangle));
Просто для того, чтобы передать Graphics городить новый объект... А смысл? Да, кстати, я не уверен, что передал правильный Rectangle, поэтому приведенный здесь код может работать странно.- Помечено в качестве ответа Abolmasov Dmitry 19 июня 2012 г. 8:14
2 июня 2012 г. 9:17Отвечающий
Все ответы
-
Добрый день.
У вас Method всегода рисует на одном и том же элементе управления? Если да, то тогда можете убрать передачу параметров в него (вместо panel1 имя вашего компонента или если вы рисуете на форме напишите this):
private void button1_Click(object sender, EventArgs e) { Method(); } private void Method() { Rectangle rect = new Rectangle(0, 0, 50, 50); Pen pen = new Pen(Color.FromArgb(128, 200, 0, 200), 2); Graphics gr = Graphics.FromHwnd(panel1.Handle); gr.ResetTransform(); gr.ScaleTransform(1.75f, 0.5f); gr.RotateTransform(28, MatrixOrder.Append); gr.TranslateTransform(150, 150, MatrixOrder.Append); gr.DrawRectangle(pen, rect); }
Если же вы хотите этим методом рисовать на разных компонентах , то тогда инициализацию Graphics надо вынести наружу и передавать в метод только ее:
private void button1_Click(object sender, EventArgs e) { Graphics gr = Graphics.FromHwnd(panel1.Handle); Method(gr); } private void Method(Graphics gr) { Rectangle rect = new Rectangle(0, 0, 50, 50); Pen pen = new Pen(Color.FromArgb(128, 200, 0, 200), 2); gr.ResetTransform(); gr.ScaleTransform(1.75f, 0.5f); gr.RotateTransform(28, MatrixOrder.Append); gr.TranslateTransform(150, 150, MatrixOrder.Append); gr.DrawRectangle(pen, rect); }
- Изменено Алексей ЛосевEditor 2 июня 2012 г. 5:33
- Помечено в качестве ответа Ziya Ceferov 2 июня 2012 г. 6:32
2 июня 2012 г. 5:31Отвечающий -
Я так могу делать, просто хотел узнать как передать PaintEventArg, просто ради интереса.2 июня 2012 г. 6:27
-
Ну можно вот так сделать:
Graphics gr = Graphics.FromHwnd(this.Handle); Method(new PaintEventArgs(gr, this.ClientRectangle));
Просто для того, чтобы передать Graphics городить новый объект... А смысл? Да, кстати, я не уверен, что передал правильный Rectangle, поэтому приведенный здесь код может работать странно.- Помечено в качестве ответа Abolmasov Dmitry 19 июня 2012 г. 8:14
2 июня 2012 г. 9:17Отвечающий