Forum » Programiranje » [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:
lepo prosim za pomoč, HVALA!
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!
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.
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.
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.
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:
Tukaj imaš pa še primer izdelave analogne ure:
http://www.codeproject.com/KB/datetime/...
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/...
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]
TV-OUT, radirke, Sinclair-Basic], Sinclair ZX-81 [Z80A, 3.25MHZ, 1kB]
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 ::
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…
- spremenil: Mitja Bonča ()
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.
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.
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]
TV-OUT, radirke, Sinclair-Basic], Sinclair ZX-81 [Z80A, 3.25MHZ, 1kB]
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [Java] Zasnova shoot em up igreOddelek: Programiranje | 1201 (880) | PecenkA |
» | VB 2008 težava s printanjem oz. napačna kodna tabelaOddelek: Programiranje | 787 (728) | RuN |
» | WPF 3d prostor - Spotlight, ne znam uporabljatOddelek: Programiranje | 1737 (1497) | Tutankhamun |
» | [c#]4 v vrsto - padanje krogovOddelek: Programiranje | 1999 (1831) | VASkO |
» | Java problemOddelek: Programiranje | 1133 (989) | YuLcE |