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:
При прокрутке движка компонента 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» и «Отмена» приведены в таблице:
Установка значения 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|