Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Private void timer1_Tick(object sender, EventArgs e)




{

//если круг "подлетел" к левой стенке,

if (x0 - radius < 0)

xDir = 1; //то начинаем двигаться вправо

//если к правой стенке,

if (x0 + radius + 5 > pictureBox1.Width)

xDir = -1; //то влево

//если к верхней стенке,

if (y0 - radius < 0)

yDir = 1; //то вниз

//если к нижней стенке,

if (y0 + radius + 5 > pictureBox1.Height)

yDir = -1; //то вверх

//изменяем координаты круга

x0 += xDir;

y0 += yDir;

//обновляем область рисования (перерисовываем круг)

pictureBox1.Invalidate();

}

 

Изменение скорости движения круга

Для изменения скорости движения нужно изменять интервал поступления сигнала от таймера, что, в свою очередь, будет регулироваться компонентом TrackBar. Интервал сигнала от таймера в данном приложении задается диапазоном от 5 до 50 миллисекунд. Соответствующие настройки задаются и для компонента TrackBar:

 

Свойство Значение Описание
Minimum   Минимальное значение
Maximum   Максимальное значение
Value   Текущее значение

 

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

 

Private void trackBar1_Scroll(object sender, EventArgs e)

{

//изменяем значение интервала таймера на выбранное

timer1.Interval = trackBar1.Value;

}

Создание диалоговой панели выбора цвета заливки

Для выбора цвета заливки круга в данном приложении будет использоваться дополнительное диалоговое окно с группой радиокнопок. Внешний вид этого окна приведен на рисунке 2.8.

 

Рис. 2.8 – Диалоговая панель выбора цвета заливки

 

В этом окне в компоненте GroupBox расположены 6 радиокнопок (RadioButton)с названиями цветов, а также 2 кнопки: «OK» и «Отмена». На кнопки помимо надписей добавлены соответствующие рисунки.

Рисунки можно добавить на кнопку либо через ее свойство Image, либо, как и сделано в данной программе, через компонент ImageList. Этот компонент представляет собой список изображений, которые потом можно назначать обычным кнопкам, пунктам меню, кнопкам панели инструментов и другим компонентам. После помещения этого компонента на форму нужно настроить его свойство Images, где с помощью отдельного диалогового окна в проект добавляются файлы с изображениями. Каждое добавленное изображение имеет свой индекс (порядковый номер), начиная с 0. В данном приложении рисунок для кнопки «OK» имеет индекс 0, а для кнопки «Отмена» – 1.

Файлы с рисунками и иконками можно найти в папке: C:\Program Files\Microsoft Visual Studio 8\Common 7\VS2005ImageLibrary.

Настройки кнопок «OK» и «Отмена» приведены в таблице:

 

Свойство Значение Описание
ImageList imageList1 Источник изображений
ImageIndex 0 для кнопки «OK», 1 для кнопки «Отмена» Индекс изображения в источнике
ImageAlign MiddleCenter Выравнивание изображения
TextAlign MiddleCenter Выравнивание текста
TextImageRelation ImageBeforeText Взаимное расположение текста и изображения
DialogResult OKдля кнопки «OK», Cancel для кнопки «Отмена» Возвращаемое значение для нажатия кнопки

 

Установка значения OK свойству DialogResult для кнопки «OK» означает, что при нажатии на эту кнопку форма закроется и вернет в главное окно значение DialogResult.OK (для кнопки «Cancel» – DialogResult.Cancel).

 

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

После отображения на экране диалогового окна значение выбранного цвета необходимо передать в главную форму программы. Непосредственно значение выбранной радиокнопки передать не удастся, т.к. переменные, описывающие компоненты формы, закрыты (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;

}

}

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...