Алгоритмическое мышление при решении задач (на примере языка C#). Шамшев А.Б - 107 стр.

UptoLike

Составители: 

107
}
//если дошли досюда, это означает, что пользователь не попал
//ни по одной фигуре, а следовательно, он не «таскает» их
carringIndex = -1;
}
/// <summary>
/// индекс квадратика, который «таскается»
/// </summary>
public int carringIndex = -1;
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);
//и вызываем перерисовку панели
drawPanel.Invalidate();
}
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);
}
}
}
Мы реализовали 1 и 3 пункт последовательности действий пользователя,
но не второй пункт.
Логично предположить, что если пользователь не «таскает» объект
(carringIndex == -1), то движения мыши обрабатывать не надо. А если
«таскает», то текущая точка мыши будет центром «таскаемого» квадратика (на
самом деле это не совсем так, но для наших целей такое приближение
подойдет
). Изменение центра квадрата приведет к изменению картины на
панели, а следовательно, ее надо перерисовать.
Приведем полный код программы:
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication4 {
public partial class Form1 : Form {
public Panel drawPanel;
public Form1() {
InitializeComponent();