Часы на С#

Автор работы: Пользователь скрыл имя, 04 Марта 2013 в 22:35, курсовая работа

Описание работы

Создать проект, реализующий аналоговые часы. В программе должны иметься отдельные минутная, часовая и секундная стрелки. Необходимо реализовать будильник с возможностью установления даты сигналы. Должна быть реализована возможность выбора в качестве сигнала аудио файла.

Содержание работы

Введение 3
Постановка задачи 4
Теоретическая часть 5
Результат работы программы 8
Заключение 9
Список литературы 10
Приложение. Листинг программы 11

Файлы: 1 файл

Курсовой часы на C#.docx

— 106.09 Кб (Скачать файл)

Содержание

Введение            3

Постановка задачи  4 

Теоретическая часть    5

Результат работы программы         8

Заключение  9

Список литературы  10

Приложение. Листинг программы  11

 

 

 

 

 

 

 

 

 

 

 

 

 

Введение

Программы,  работающие на компьютере, можно разделить на три категории

   1. Прикладные программы,  непосредственно обеспечивающие  выполнение необходимых пользователям  работ: Редактирование текстов,  рисование, обработку информационных  массивов и т.д.

   2. Системные программы,  выполняющие различные вспомогательные  функции, например диагностика  компьютера или резервное копирование  информации.

   3. Инструментальные  системы (системы программирования), обеспечивающие создание новых  программ.

Данные категории программ в свою очередь так же разделяются  на несколько категорий.

Например, прикладные программы  можно разделить по уровню сложности  обработки информации и результатов.

Данная программа относится к первой категории, служит вспомогательной программой, основная задача которой,   это создание программы аналоговых часов с отображением на экране монитора циферблата часов,  на котором повторяются движения большой, малой и секундной стрелок,  как у настоящих часов. Программа проста в использовании и имеет интуитивно понятный  интерфейс. В качестве инструмента разработки проекта применялась Microsoft Visual Studio 2012. Язык программирования – C#.

 

 

 

 

                                          Постановка задачи

Создать проект, реализующий  аналоговые часы. В программе должны иметься отдельные минутная, часовая  и секундная стрелки. Необходимо реализовать будильник с возможностью установления даты сигналы. Должна быть реализована возможность выбора в качестве сигнала  аудио файла.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                 

 

 

                                    Теоретическая часть

Графика необходима при организации  пользовательского интерфейса. Образы информативнее текста. Framework.Net реализует расширенный графический интерфейс GDI+, обладающий широким набором возможностей. Но для рисования в формах достаточно иметь три объекта — перо, кисть и, хочется сказать, бумагу, но третий нужный объект — это объект класса Graphics, методы которого позволяют в формах заниматься графикой — рисовать и раскрашивать.

Класс Graphics — это основной класс, необходимый для рисования. Класс Graphics, так же, как и другие рассматриваемые здесь классы для перьев и кистей, находятся в пространстве имен Drawing, хотя классы некоторых кистей вложены в подпространствоDrawing2D.

Объекты этого класса зависят  от контекста устройства, (графика  не обязательно отображается на дисплее  компьютера, она может выводиться на принтер, графопостроитель или другие устройства), поэтому создание объектов класса Graphics выполняется не традиционным способом — без вызова конструктора класса. Создаются объекты специальными методами разных классов. Например, метод CreateGraphics класса Control — наследника класса Form — возвращает объект, ассоциированный с выводом графики на форму.

При рисовании в формах можно объявить в форме поле, описывающее  объект класса Graphics:

Graphics graph; а в конструкторе формы произвести связывание с реальным объектом:

graph = CreateGraphics();

Затем всюду в программе, где нужно работать с графикой, используется глобальный для формы  объект graph и его методы. Есть другой способ получения этого объекта — обработчики некоторых событий получают объект класса Graphics среди передаваемых им аргументов.

У класса Graphics большое число методов и свойств. Упомяну лишь о некоторых из них. Группа статических методов класса позволяет создать объект этого класса, задавая например описатель (handle) контекста устройства.

Для рисования наиболее важны  три группы методов. К первой относится  перегруженный метод DrawString, позволяющий выводить тексты в графическом режиме. Вторую группу составляют методы Draw — DrawEllipse, DrawLine,DrawArc и другие, позволяющие цветным пером (объектом класса Pen) рисовать геометрические фигуры: линии, различные кривые, прямоугольники, многоугольники, эллипсы и прочее. К третьей группе относятся методы Fill —FillEllipse, FillPie, FillRectangle и другие, позволяющие нарисовать и закрасить фигуру кистью. Кисти (объекты классов, производных от Brush), могут быть разные — сплошные, узорные, градиентные.

 Класс Pen Методам группы Draw класса Graphics, рисующим контур фигуры, нужно передать перо — объект класса Pen. В конструкторе этого класса можно задать цвет пера и его толщину (чаще говорят «ширину пера»). Цвет задается объектом класса (структурой) Color. Для выбора подходящего цвета можно использовать упоминавшееся выше диалоговое окно Color либо одно из многочисленных статических свойств класса Color, возвращающее требуемый цвет. Возможно и непосредственное задание элементов структуры в виде комбинации RGB — трех цветов — красного, зеленого и голубого. Вместо создания нового пера с помощью конструктора можно использовать специальный класс предопределенных системных перьев.

Класс Brush, задающий кисти, устроен более сложно. Начну с того, что класс Brush является абстрактным классом, так что создавать кисти этого класса нельзя, но можно создавать кисти классов-потомков Brush. Таких классов пять — они задают кисть:

   * SolidBrush — для сплошной закраски области заданным цветом;

   * TextureBrush — для закраски области заданной картинкой (image);

   * HatchBrush — для закраски области предопределенным узором;

   * LinearGradientBrush — для сплошной закраски с переходом от одного цвета к другому, где изменение оттенков задается линейным градиентом;

   * PathGradientBrush — для сплошной закраски с переходом от одного цвета к другому, где изменение оттенков задается более сложным путем.

Первые два класса кистей находятся в пространстве имен System.Drawing, остальные — в System.Drawing.Drawing2D.

 

 

 

 

 

 

 

 

 

 

 

                               Результат работы программы

 

 

                                           

 

                                  

 

                

 

Заключение

В ходе написания данной курсовой работы мною была изучена  среда разработки Microsoft Visual Studio 2012.

Мною была разработана  программа основная задача которой,   это создание программы аналоговых часов с отображением на экране монитора циферблата часов,  на котором повторяются движения большой, малой и секундной стрелок,  как у настоящих часов. Также была реализована функция будильника с возможностью установления даты сигналы и возможностью выбора в качестве сигнала аудио файла.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список литературы

   1. К.Ватсон, К.Нейгел «Microsoft Visual C# 2008 Базовый курс» - М., Диалектика, 2009, 1216с.

   2. Э.Троелсен «Язык программирования C# и платформа .Net 3.5» - М., Вильямс, 2010, 1344с

3. Г. Шилдт «C# 4.0: полное руководство» М., Диалектика, 2008, 752с.

4. Д.Албахари, Б.Албахари «C# 5.0. Справочник. Полное описание языка» М., Вильямс, 2012, 1064с.

 

                       

 

 

 

 

 

 

 

 

 

 

 

 

Приложение.

Листинг программы

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

 

namespace WindowsFormsApplication1

{

    public partial class Form1 : Form

    {

        int mouseX, mouseY;

        DateTime Time;     

        Graphics gr;

        bool mousepressed;

       

        public Form1()

        {

            InitializeComponent();

        }

        private void timer1_Tick(object sender, EventArgs e)

        {

            Time = DateTime.Now; // считываем системное время на компьютере

           

            if (Time.ToString() == Properties.Settings.Default.AlarmTime.ToString()) // если время равно времени будильника...

            {

                System.Media.SoundPlayer player = new System.Media.SoundPlayer(); // создаем обьект плэер

                if (File.Exists(Properties.Settings.Default.AudioFilename))  // проверяем, существует ли выбранный аудиофайл

                {

                    player.SoundLocation = Properties.Settings.Default.AudioFilename; // указываем название аудиодорожки из параметров

                    player.Load();// загружаем аудио     

                    player.PlayLooping();// воспроизводим аудио с повтором 

                }else Console.Beep();// если файл не выбран, либо программа ссылается на несуществующий аудиофайл, просто воспроизводим однократный писк      

                DialogResult result =

                MessageBox.Show(Properties.Settings.Default.AlarmText, "Будильник", MessageBoxButtons.OK, MessageBoxIcon.Information);

                if (result == DialogResult.OK) player.Stop();                     // выводим окно сообщения. При закрытии сообщения прекращается воспроизведение аудио    

            }         

            this.Refresh();//Перерисовываем окно, "затирая" предыдущее изображение.

            if (Properties.Settings.Default.IsAlarm == true) // если будильник включен...

                if (Properties.Settings.Default.StandImgSetting==true) // если включен стандартный внешний вид, выводим стандартную картинку из ресурсов, в противном случае выводим выбранное изображение

                gr.DrawImage(Properties.Resources.Ring_res, this.Width / 2 - 10, this.Height / 2 - 30 ); 

                else gr.DrawImage(Image.FromFile(Properties.Settings.Default.AlarmImgPath), this.Width / 2 - 10, this.Height / 2 - 30); 

            gr.TranslateTransform(this.Width / 2, this.Height / 2);  // переносим начало координат в центр циферблата для прорисовки стрелок

            gr.RotateTransform(30.0F * Time.Hour + 180 );  // поворачиваем полотно для рисования стрелок на нужный угол

            gr.DrawImageUnscaled(imageList1.Images[0], -imageList1.ImageSize.Width / 2, -Properties.Settings.Default.indHourUp);  // рисуем часовую стрелку

            gr.RotateTransform(6.0F * Time.Minute + 180 - (30.0F * Time.Hour + 180)); // поворачиваем полотно для рисования стрелок на нужный угол

            gr.DrawImageUnscaled(imageList1.Images[1], -imageList1.ImageSize.Width / 2, -Properties.Settings.Default.indMinUp);  // рисуем минутную стрелку

            gr.RotateTransform(6.0F * Time.Second + 180 - ((6.0F * Time.Minute + 180) - (30.0F * Time.Hour + 180)) - (30.0F * Time.Hour + 180)); // поворачиваем полотно для рисования стрелок на нужный угол

            gr.DrawImageUnscaled(imageList1.Images[2], -imageList1.ImageSize.Width / 2, -Properties.Settings.Default.indSecUp); // рисуем секундную стрелку

            gr.ResetTransform();  // сбрасываем все операции поворотов и переноса полотна

        }

         private void Form1_Load(object sender, EventArgs e)

        {

            TopMost = Properties.Settings.Default.StayOnTop;

             //gr = this.CreateGraphics(); // создаем графический обьект на форме для рисования на нем часов

            //this.Size = Properties.Resources.backgnd_res.Size; // выставляем размер окна равным размеру фона

            //this.BackgroundImage = Properties.Resources.backgnd_res; // загружаем стандартный фон часов

          //  this.TransparencyKey = Color.White; // выставляем прозрачный цвет для станд. фона (белый)

          //  this.BackColor = Color.White; // выставляем цвет для формы (белый)

            imageList1.Images.Clear(); // очищаем список картинок от картинок ))

//            imageList1.ImageSize = Properties.Resources.indicator_hour_res.Size;  // выставляем размер картинок в списке картинок, равным размеру картинок со стрелками

           // imageList1.TransparentColor = Color.White; ; // выставляем прозрачный цвет картинок со стрелками

          //  imageList1.Images.Add(Properties.Resources.indicator_hour_res); // загружаем картинки

           // imageList1.Images.Add(Properties.Resources.indicator_min_res);

          // imageList1.Images.Add(Properties.Resources.indicator_sec_res);

            //imageList1.Images.Add(Properties.Resources.Ring_res);

            if (Properties.Settings.Default.StandImgSetting == false)

            {

                   // пробуем считать параметры из настроек программы

                if (File.Exists(Properties.Settings.Default.BackgndImgPath)) // проверяем наличие файла с изображением фона

                {

                    this.Size = Image.FromFile(Properties.Settings.Default.BackgndImgPath).Size; // размер формы устанавливаем равным размеру фоновой картинки

                    this.BackgroundImage = Image.FromFile(Properties.Settings.Default.BackgndImgPath); // выставляем фон

                } else

                {

                    this.Size = Properties.Resources.backgnd_res.Size; // выставляем размер окна равным размеру фона

                    this.BackgroundImage = Properties.Resources.backgnd_res; // загружаем стандартный фон часов

                }

                    this.BackColor = Properties.Settings.Default.BackTransp;  // выставляем цвет окна (должен быть равным прозрачному цвету окна)

                    this.TransparencyKey = Properties.Settings.Default.BackTransp;  // выставляем прозрачный цвет окна

                    imageList1.TransparentColor = Properties.Settings.Default.IndicatorsTransp; // выставляем прозрачный цвет для картинок со стрелками и фоном

                    if (File.Exists(Properties.Settings.Default.HourImgPath)) imageList1.ImageSize = Image.FromFile(Properties.Settings.Default.HourImgPath).Size;

                    else  imageList1.ImageSize = Properties.Resources.indicator_hour_res.Size;

                    // проверяем наличие файлов и, если таковые имеются, загружаем их в список картинок 

Информация о работе Часы на С#