ВУЗ:
Составители:
Рубрика:
104
public Form1() {
InitializeComponent();
//создаем панель, на которой будет происходить рисование
Panel drawPanel = new Panel();
//говорим, что она должна заполнять всю форму
drawPanel.Dock = DockStyle.Fill;
//добавляем обработчик рисования
drawPanel.Paint += new PaintEventHandler(drawPanel_Paint);
//добавляем обработчик нажатий кнопки мыши
drawPanel.MouseClick += new
MouseEventHandler(drawPanel_MouseClick);
//и добавляем ее на форму
this.Controls.Add(drawPanel);
}
void drawPanel_MouseClick(object sender, MouseEventArgs e) {
//если нажата не правая кнопка мыши,
if (e.Button != MouseButtons.Right) {
//то выходим
return;
}
//создаем новый квадрат
var newF = new Square(e.X, e.Y, 10);
//и добавляем его в список квадратов
figureList.Add(newF);
}
public List<Square> figureList = new List<Square>();
void drawPanel_Paint(object sender, PaintEventArgs e) {
for (int i = 0; i < figureList.Count; i++) {
figureList[i].draw(e.Graphics);
}
}
}
Однако, если запустить программу, будет видно, что квадраты не
появляются. Это связано с тем, что по логике мы сказали, как надо рисовать, но
не сказали, когда надо рисовать. Для вызова рисования необходимо вызвать
метод Invalidate у панели. А следовательно, drawPanel надо вынести из
функции. Поэтому следующий шаг в решении задачи будет:
public partial class Form1 : Form {
public Panel drawPanel;
public Form1() {
InitializeComponent();
//создаем панель, на которой будет происходить рисование
drawPanel = new Panel();
//говорим, что она должна заполнять всю форму
drawPanel.Dock = DockStyle.Fill;
//добавляем обработчик рисования
drawPanel.Paint += new PaintEventHandler(drawPanel_Paint);
//добавляем обработчик нажатий кнопки мыши
Страницы
- « первая
- ‹ предыдущая
- …
- 102
- 103
- 104
- 105
- 106
- …
- следующая ›
- последняя »