» »

[C#]Analogna ura

[C#]Analogna ura

bandek ::

Mene zanima, če ma kdo mogoče v svojih arhivih kakšen program v C# in namreč analogno uro? Bi prosil če bi mi poslal na ZS. Ali pa da mi kdo pomaga jo narediti. Navodila naloge so pa takšna:
Izdelajte aplikacijo, ki prikazuje analogno uro (s kazalci). Ura naj ima tudi sekundni kazalec. Uro izrišite v oknu, kazati pa mora točenčas na sistemu. Dimenzije ure naj se sorazmerno spreminjajo z velikostjo okna. Realizirajte tudi funkcionalnost budlike (alarma).Omogočite uporabniške nastavitve (izbira glasbene datoteke, čas trajanja, ponavljanje, glasnost…). Bodite kreativni in uporabitedomišljijo pri izdelavi grafičnega vmesnika (budilka s kukavico). Ura naj ima možnost sinhronizacije časa iz ntp strežnika.


lepo prosim za pomoč, HVALA!

darkolord ::

A si že kaj probal narest?

techfreak :) ::

Točen čas dobiš preko DateTime.Now, za sinhronizacijo z ntp strežnikom pa poglej na Googlu.

Pri alarmu tako samo preverjaš, če je nastavljen čas večji ali enak od trenutnega.

Za risanje ure pa uporabi Graphics objekt ter najprej izračunaj kot pod katerim je kazalec (Math.PI) ter s pomočjo Math.Sin in Math.Cos nariši točko, kjer se kazalec trenutno nahaja. Potem pa samo potegni črto iz sredine ure do te točke.

lostsoul ::

Zakon si, še isti dan ko dobimo seminarske že sprašuješ za pomoč :D

joze67 ::

Be creative.
Analogno uro najlažje realiziraš s pomočjo treh kontrol ProgressBar - eno za ure, drugo za minute, tretjo za sekunde. Kakorkoli gledaš, ne moreš porabiti več kot 5 minut časa za realizacijo osnovne funkcionalnosti (prikaz časa, resize, ...)
Če ne znaš zagovoriti, da je tudi to kazalec, moraš sekundni kazalec narisati on top ali ob strani ipd.

Mitja Bonča ::

Tukaj imaš kodo za eno analogno urco:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Text;
using System.Windows.Forms;

namespace Clock
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Paint += new PaintEventHandler(drawclock);
            this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
            this.SetStyle(ControlStyles.UserPaint, true);
            this.SetStyle(ControlStyles.DoubleBuffer, true);
        }
        private void drawclock(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            Rectangle rec = new Rectangle(20,20,250,250);
            LinearGradientBrush linearbrush = new LinearGradientBrush(rec, Color.Yellow, Color.Green,225);
            g.FillEllipse(linearbrush,20, 20, 200, 200);
            linearbrush.LinearColors = new Color[] { Color.Yellow, Color.Green, };
            g.FillEllipse(linearbrush,30, 30, 180, 180);
            linearbrush.LinearColors = new Color[] { Color.Green, Color.Yellow };
            g.FillEllipse(linearbrush,33,33,174,174);

            SolidBrush solidbrush = new SolidBrush(Color.White);
            Font textFont = new Font("Arial Bold", 12F);
            g.DrawString("12", textFont, solidbrush, 109, 40);
            g.DrawString("11", textFont, solidbrush, 75, 50);
            g.DrawString("10", textFont, solidbrush, 47, 75);
            g.DrawString("9", textFont, solidbrush, 43, 110);
            g.DrawString("8", textFont, solidbrush, 52, 145);
            g.DrawString("7", textFont, solidbrush, 75, 170);
            g.DrawString("6", textFont, solidbrush, 113, 180);
            g.DrawString("5", textFont, solidbrush, 150, 170);
            g.DrawString("4", textFont, solidbrush, 173, 145);
            g.DrawString("3", textFont, solidbrush, 182, 110);
            g.DrawString("2", textFont, solidbrush, 173, 75);
            g.DrawString("1", textFont, solidbrush, 150, 50);

            g.TranslateTransform(120,120,MatrixOrder.Append);
            int hour = DateTime.Now.Hour;
            int min = DateTime.Now.Minute;
            int sec = DateTime.Now.Second;
            // Create Pens
            Pen hourPen = new Pen(Color.White, 2);
            Pen minutePen = new Pen(Color.LightGray, 2);
            Pen secondPen = new Pen(Color.Red, 1);

            // Create angles
            double secondAngle = 2.0 * Math.PI * sec / 60.0;
            double minuteAngle = 2.0 * Math.PI * (min + sec / 60.0) / 60.0;
            double hourAngle = 2.0 * Math.PI * (hour + min / 60.0) / 12.0;

            // Set centre point
            Point centre = new Point(0, 0);

            // Draw Hour Hand
            Point hourHand = new Point((int)(40 * Math.Sin(hourAngle)),
                                        (int)(-40 * Math.Cos(hourAngle)));
            g.DrawLine(hourPen, centre, hourHand);

            // Draw Minute Hand
            Point minHand = new Point((int)(70 * Math.Sin(minuteAngle)),
                                       (int)(-70 * Math.Cos(minuteAngle)));
            g.DrawLine(minutePen, centre, minHand);

            // Draw Second Hand
            Point secHand = new Point((int)(70 * Math.Sin(secondAngle)),
                                       (int)(-70 * Math.Cos(secondAngle)));
            g.DrawLine(secondPen, centre, secHand);
            Invalidate();
            

        }
    }
}


Tukaj imaš pa še primer izdelave analogne ure:
http://www.codeproject.com/KB/datetime/...

darkolord ::

Še poročilo mu napište ;((

boogie_xlr ::

Erik, Klemen, Matej in Alen. Lep pozdrav in vso srečo pri izdelavi vaših nalog!

cekr ::

In potem bo iz šole izšel strokovno izklesan kader. Hm?
Sinclair ZX Spectrum [Zilog Z80A - 3.5 MHz, 48kB, dvojni kasetofon,
TV-OUT, radirke, Sinclair-Basic], Sinclair ZX-81 [Z80A, 3.25MHZ, 1kB]

Okapi ::

Važno je, da se fantje znajdejo. Programirali bodo itak Indijci>:D

O.

lostsoul ::

boogie_xlr je izjavil:

Erik, Klemen, Matej in Alen. Lep pozdrav in vso srečo pri izdelavi vaših nalog!

me prav zanima kateri je bandek :D

Mitja Bonča ::

cekr je izjavil:

In potem bo iz šole izšel strokovno izklesan kader. Hm?

Kaj zato? Se bodo že naučili...
Jaz znam veliko več kot zahteva srednja + fakulteta skupaj, pa še ne dobim šihta v programiranju. Ni to malce absurdno?
Zato pa vsaj pomagam ljudem, ki pomoč potrebujejo.

Mitja

Zgodovina sprememb…

techfreak :) ::

Jaz znam veliko več kot zahteva srednja + fakulteta skupaj, pa še ne dobim šihta v programiranju. Ni to malce absurdno?

Ne, ne znaš. Programiranje takšnih stvari je malenkost in niti ni to glavni namen šolskega programa.

lostsoul ::

Dejansko res, programiranje je le del faxa..

Zgodovina sprememb…

  • spremenilo: lostsoul ()

arjan_t ::

Mitja Bonča je izjavil:


Zato pa vsaj pomagam ljudem, ki pomoč potrebujejo.
Mitja


pomoč je da ga "usmeriš" da bo znal nalogo rešiti sam, ne da mu podaš reštev (od katere se ne bo naučil nič)

cekr ::

Službeno itak ne boš delal analogne ure ampak kakšno bolj kompleksno zadevo. Še posebej, če se znajdeš v kakšni firmi, kjer boš programiral proizvodne procese ipd. Tam ni nobenega šolskega primera. Vedno se učiš na novo.
Poleg vsega ti samo znanje programiranja ne bo nič koristilo, če ne poš poznal delovanja podjetja in njegovih procesov. Drugo je packanje statičnih web strani, kjer delaš po nareku.
Sinclair ZX Spectrum [Zilog Z80A - 3.5 MHz, 48kB, dvojni kasetofon,
TV-OUT, radirke, Sinclair-Basic], Sinclair ZX-81 [Z80A, 3.25MHZ, 1kB]


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Java] Zasnova shoot em up igre

Oddelek: Programiranje
111195 (874) PecenkA
»

VB 2008 težava s printanjem oz. napačna kodna tabela

Oddelek: Programiranje
5764 (705) RuN
»

WPF 3d prostor - Spotlight, ne znam uporabljat

Oddelek: Programiranje
161727 (1487) Tutankhamun
»

[c#]4 v vrsto - padanje krogov

Oddelek: Programiranje
81989 (1821) VASkO
»

Java problem

Oddelek: Programiranje
51124 (980) YuLcE

Več podobnih tem