24 Ocak 2014 Cuma

C# WPF Saat Uygulaması


                Bu WPF ile dördüncü uygulamamız. Bu uygulamamızda aşağıdaki gibi basit bir dijital saat yapıcaz.



                Öncelikler WPF projesi oluşturuyoruz. Daha sonra uygulamada kullanacağım resmi projeme dahil ediyorum. Bunun için Solution Explorer da projemin ismine sağ tıklıyorum , açılan menüden AddàNew Folder ile resmimi atacağım bir Resimler klasörü oluşturuyorum. Yine aynı şekilde oluşturduğum klasör üzerinde sağ tık ve AddàExisting Item ile resmimin olduğu konuma gidip daha önceden Inkscape ile hazırladığım resmimi ekliyorum.( Alttaki combobox içerisindeki seçeneği “All Files” yaparsak resmimiz gözükecektir! )



                Resmi eklediğimize göre uygulamaya başlayabiliriz. Uygulamamızda resim üzerinde saat gözükecek ve penceremiz gözükmeyecek bunun için Xaml kısmında Window etiketi içerisinde seçili iken WindowStyle  None olarak ayarlıyorum ve arka planın gözükmemesi için de AllowTransparancy  özelliğini etkinleştiriyorum. Daha sonra Mouse ile sola basılı şekilde resmimizi ekranda kaydırmak için MouseLeftButtonDown  ve sağa tık ile kapanmasını sağlamak için MouseRightDown yazarak otomatik olarak birer fonksiyon oluşturuyorum ve resmimi de ekliyorum. Sonuç olarak Xaml kodum aşağıdaki gibi oldu :

<Window x:Class="saat.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" AllowsTransparency="True" WindowStyle="None"
        MouseLeftButtonDown="Window_MouseLeftButtonDown_1" MouseRightButtonDown="Window_MouseRightButtonDown_1">
    <Window.Background>
        <ImageBrush ImageSource="Resimler/deneme.png"/>
    </Window.Background>
    <Grid>
       
    </Grid>
</Window>

                Görüntüm aşağıdaki gibi oldukça büyük oldu bunu Mouse ile Window boyutunu istediğim gibi ayarlıyorum.



                Bu işlemden sonra saatin gözükeceği bir TextBox ı Grid etiketi içerisine yazıyorum  ve TextBox ın özelliklerini aşağıdaki gibi tanımlıyorum ve boyutunu yine Mouse ile istediğim gibi ayarlıyorum.

<Grid>
        <TextBox Name="saat" Background="Transparent" TextAlignment="Center"
                 FontWeight="Bold" Foreground="Red" FontSize="20" BorderThickness="0" Cursor="Arrow" Focusable="False"/>
</Grid>

                Xaml kısmı hazır şimdi de C# ile gerekli kodlara yazalım.

namespace saat
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        private System.Windows.Threading.DispatcherTimer timer = new System.Windows.Threading.DispatcherTimer();

        public MainWindow()
        {
            InitializeComponent();
            timer.Interval = TimeSpan.FromSeconds(1);
            timer.IsEnabled = true;
            timer.Tick += timer_say;
        }

        private void Window_MouseLeftButtonDown_1(object sender, MouseButtonEventArgs e)
        {
            this.DragMove();
        }

        private void Window_MouseRightButtonDown_1(object sender, MouseButtonEventArgs e)
        {
            Application.Current.Shutdown();
        }
        private void timer_say(object sender, EventArgs e)
        {
            DateTime simdi = DateTime.Now;
            saat.Text = simdi.ToLongTimeString();
        }
    }
}


                Yukarıda bir timer tanımladık ve MainWindow içerisinde her bir saniye yenilenmesini sağladık.(TimeSpan.FromSecond()) timer_say adında kendimiz bir fonksiyon tanımladık ve bu fonksiyon ile o anki bilgisayar saatini almış olduk ve textbox ımıza aktardık. Sola basıldığında DragMove() fonk. ile sürükleyebilmeyi sağladık. Sağa basıldığında ise uygulamayı sonlandırdık. Uygulamamız hazır. Çalışır hali aşağıdakiler gibi.


            Bunlarda başka bir resimle yaptığım saat.





0 yorum:

Yorum Gönder