Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР 2 Языки программирования академ.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
319 Кб
Скачать
☆

3.2.6. Создание свойства для получения цвета

После отображения на экране диалогового окна значение выбранного цвета необходимо передать в главную форму программы. Непосредственно значение выбранной радиокнопки передать не удастся, т.к. переменные, описывающие компоненты формы, закрыты (private). Поэтому для решения этой проблемы необходимо создать в классе Form2 общедоступное свойство для получения выбранного цвета, а также для установки текущего цвета круга (соответствующая радиокнопка становится выбранной). Тип свойства – Color. Код свойства приведен далее:

public Color CircleColor

{

get

{

//если выбрана первая радиокнопка,

if (radioButton1.Checked)

//то вернуть черный цвет

return Color.Black;

if (radioButton2.Checked) //и т.д.

return Color.Gray;

if (radioButton3.Checked)

return Color.Red;

if (radioButton4.Checked)

return Color.Yellow;

if (radioButton5.Checked)

return Color.Green;

return Color.Blue;

}

set

{

//если текущий цвет круга - черный,

if (value == Color.Black)

//то сделать выбранной первую радиокнопку

radioButton1.Checked = true;

if (value == Color.Gray) //и т.д.

radioButton2.Checked = true;

if (value == Color.Red)

radioButton3.Checked = true;

if (value == Color.Yellow)

radioButton4.Checked = true;

if (value == Color.Green)

radioButton5.Checked = true;

if (value == Color.Blue)

radioButton6.Checked = true;

}

}

3.2.7. Проверка попадания курсора мыши внутрь круга

Изменение цвета круга в программе должно происходить при щелчке левой кнопкой мыши внутри круга (событие MouseClick для компонента pictureBox1). Для этого необходимо отслеживать координаты курсора мыши: попал ли он в момент щелчка внутрь круга.

Если область изображения прямоугольная, то такая проверка осуществляется достаточно просто:

If (прямоугольник.Contains(точка_курсора))

//выполнить нужные действия

Если же область изображения – не прямоугольная (круг, как в нашем случае, или более сложная фигура), нужно использовать компоненты класса GraphicsPath для формирования сложных фигур. Объект этого типа описывается в классе Form1

GraphicsPath path;

и в конструкторе класса формы ему выделяется память:

path = new GraphicsPath();

Когда на экране рисуется очередной новый круг, его изображение помещается в предварительно очищенный объект GraphicsPath. Таким образом, в конец метода pictureBox1_Paint надо добавить следующие строки:

//очищаем фигуру

path.Reset();

//начинаем формирование фигуры

path.StartFigure();

//добавляем круг в фигуру

path.AddEllipse(x0-radius, y0 - radius, 2 * radius, 2 * radius);

//завершаем формирование фигуры

path.CloseFigure();

Если изображение состоит из нескольких элементов (не только из одного круга, как в нашем случае), их все нужно добавить в объект GraphicsPath.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]