Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Windows Forms
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2013, 15:52   #1
NikolyaShiryaev
Новичок
Джуниор
 
Регистрация: 18.11.2013
Сообщений: 2
По умолчанию C# Секундомер

Доброго времени суток! Помогите доделать секундомер: нужен циферблат(обозначение от 1 до 60),линия секундомера должна выглядеть как стрелка,а не линия(мой пример).
Вот мой секундомер:
Код:
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;

namespace _13 
    
{
    using System.Drawing.Drawing2D;
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
        public int angle = 0;
        public int num = 0;
        private void panel1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
        {
            GraphicsPath myGraphicsPath = new GraphicsPath();
            myGraphicsPath.AddString(num.ToString(), FontFamily.GenericMonospace, (int)FontStyle.Italic, 21f, new Point(20, 20), StringFormat.GenericDefault);
            myGraphicsPath.AddLine(100, 0, 100, 100);
            Matrix myMatrix = new Matrix();
            PointF myPointF = new PointF(100,100);
            myMatrix.RotateAt(angle, myPointF);
            myGraphicsPath.Transform(myMatrix);
            e.Graphics.DrawPath(new Pen(Color.Black, 3), myGraphicsPath);
            angle = angle + 6;
            num = (int)angle / 6;
            if (angle == 360) angle = 0;
            e.Graphics.DrawEllipse(new Pen(Color.Blue, 2), 0, 0, 200, 200);
            e.Graphics.DrawLine(new Pen(Color.Red, 1), 0, 100, 200, 100);
            e.Graphics.DrawLine(new Pen(Color.Red, 1),100,0,100,200);
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            panel1.Refresh();
        }
    }
}


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 18.11.2013 в 16:41.
NikolyaShiryaev вне форума Ответить с цитированием
Старый 22.11.2013, 11:31   #2
NikolyaShiryaev
Новичок
Джуниор
 
Регистрация: 18.11.2013
Сообщений: 2
По умолчанию

Код:
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;

namespace _13 
    
{
    using System.Drawing.Drawing2D;
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
        public int angle = 0;
        public int num = 0;
        private void panel1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
        {
            GraphicsPath myGraphicsPath = new GraphicsPath();
            myGraphicsPath.AddString(num.ToString(), FontFamily.GenericMonospace, (int)FontStyle.Italic, 21f, new Point(20, 20), StringFormat.GenericDefault);
            myGraphicsPath.AddLine(100, 0, 100, 100);
            Matrix myMatrix = new Matrix();
            PointF myPointF = new PointF(100,100);
            myMatrix.RotateAt(angle, myPointF);
            myGraphicsPath.Transform(myMatrix);
            e.Graphics.DrawPath(new Pen(Color.Black, 3), myGraphicsPath);
            angle = angle + 6;
            num = (int)angle / 6;
            if (angle == 360) angle = 0;
            e.Graphics.DrawEllipse(new Pen(Color.Blue, 2), 0, 0, 200, 200);
            e.Graphics.DrawLine(new Pen(Color.Red, 1), 0, 100, 200, 100);
            e.Graphics.DrawLine(new Pen(Color.Red, 1),100,0,100,200);
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            panel1.Refresh();
        }
    }
}
NikolyaShiryaev вне форума Ответить с цитированием
Старый 25.11.2013, 16:15   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

а если в событии Form_Load запустить таймер?

вот так:
Код:
        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Interval = 100; // не обязательно, можно задать и через свойства timer1
            timer1.Start();
        }
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Секундомер ser70 Общие вопросы C/C++ 4 24.12.2012 04:03
Секундомер shinydo Visual C++ 0 01.03.2012 14:54
Секундомер Ins1De Общие вопросы C/C++ 3 26.05.2010 22:14
Секундомер girkoff Общие вопросы C/C++ 3 26.12.2009 12:30
секундомер itisiam Общие вопросы Delphi 6 31.05.2007 16:55