A jedeme dál ...
Človíčkův Weblog aneb Michal Horák bloguje

WPF analogové hodiny

 | 27.11.2009

Když jsem si začal hrát s WPF tak první věc co se mi myslím trošku povedla, byly analogové hodiny jako userControl. Bylo to překvapivě snadné a tak se o řešení podělím. Nevýhodou userControlu je, že hodiny mají pevnou velikost, sice chvilku snaha na nápravu byla, ale už nebyl čas.

Facebook


	
		
			
			
			
		
		
			
			
			
		
		
			
				
					
				
			
			
				
					
				
			
			
				
					
				
				
					
				
			
			
				
					
				
			
			
				
					
				
			
			
			
			
			
				
					
				
			
			
		
	

A samozřejmě kód v c#, který hodiny rozběhá:

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Timers;
using System.Windows.Threading;

namespace CashDeskVision
{
	/// 
	/// Interaction logic for Clock.xaml
	/// 
	public partial class Clock : UserControl
	{

        private RotateTransform minuteRotateTransform;
        private RotateTransform hourRotateTransform;
        private RotateTransform secondRotateTransform;

        public delegate void TickTackHandler(Object sender, EventArgs e);
        DispatcherTimer secondTimer = new DispatcherTimer();


        public string Text {
            get {
                return this.text.Text;
            }
            set {
                this.text.Text = value;
            }
        }

		public Clock()
		{
			this.InitializeComponent();
            SetTime(DateTime.Now);

            secondTimer.Tick += new EventHandler(secondTimer_Tick);
            secondTimer.Interval = new TimeSpan(0, 0, 1);
            secondTimer.Start();
		}

        void secondTimer_Tick(object sender, EventArgs e)
        {
            SetTime(DateTime.Now);
        }

        private void SetTime(DateTime time)
        {


            minuteRotateTransform = new RotateTransform(time.Minute * 6, 0, 0);
            this.minute.RenderTransform = minuteRotateTransform;
           
            hourRotateTransform = new RotateTransform(time.Hour * 30, 0, 0);
            this.hour.RenderTransform = hourRotateTransform;

            secondRotateTransform = new RotateTransform(time.Second * 6, 0, 0);
            this.second.RenderTransform = secondRotateTransform;
        }


	}
}

Příspěvek vyšel v Pátek 27.11.2009 09:45 v kategorii Programování a byl 11881x zobrazen. Pokud se vám líbil můžete si jej zalinkovat: Linkuj.cz, Del.icio.us

Reklama:

Komentáře


Přidejte svůj komentář

Přidej komentář

Tipy na přečtení

Kategorie

Vyhledávání

Odkazy

Fotoblog

Poslední fotgrafie z fotoblogu

Nejčtenější příspěvky za poslední týden

Poslední příspěvky

"A jedeme dál ..." Človíčkův Weblog aneb Michal Horák bloguje. (c) Michal Horák (Človíček webdesign) 2006