C# WPF Form’da farklı bir saat uygulaması örneği.
Örneğe ait ekran görüntüsü XAML kodları ve C# kodları aşağıdaki gibi olacaktır.
C# kodları;
Örneğe ait ekran görüntüsü XAML kodları ve C# kodları aşağıdaki gibi olacaktır.
Kod:
<Window x:Class="BinClockC.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="218.492" Width="505.325" Loaded="Window_Loaded" Name="MainWin" WindowStyle="ThreeDBorderWindow" ResizeMode="NoResize">
<Window.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black" Offset="0"/>
<GradientStop Color="#FF474747" Offset="1"/>
</LinearGradientBrush>
</Window.Background>
<Grid x:Name="MainGrid">
<Rectangle x:Name="H0" HorizontalAlignment="Left" Height="35" Margin="211,40,0,0" Stroke="#FF033805" VerticalAlignment="Top" Width="38" RadiusX="50" RadiusY="50">
<Rectangle.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="10"/>
</Rectangle.Effect>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFFFFF1B" Offset="0"/>
<GradientStop Color="#FF29B413" Offset="0.568"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="H1" HorizontalAlignment="Left" Height="35" Margin="254,40,0,0" Stroke="#FF033805" VerticalAlignment="Top" Width="38" RadiusX="50" RadiusY="50">
<Rectangle.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="10"/>
</Rectangle.Effect>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFFFFF1B" Offset="0"/>
<GradientStop Color="#FF29B413" Offset="0.568"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="H2" HorizontalAlignment="Left" Height="35" Margin="297,40,0,0" Stroke="#FF033805" VerticalAlignment="Top" Width="38" RadiusX="50" RadiusY="50">
<Rectangle.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="10"/>
</Rectangle.Effect>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFFFFF1B" Offset="0"/>
<GradientStop Color="#FF29B413" Offset="0.568"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="H3" HorizontalAlignment="Left" Height="35" Margin="340,40,0,0" Stroke="#FF033805" VerticalAlignment="Top" Width="38" RadiusX="50" RadiusY="50">
<Rectangle.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="10"/>
</Rectangle.Effect>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFFFFF1B" Offset="0"/>
<GradientStop Color="#FF29B413" Offset="0.568"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="H4" HorizontalAlignment="Left" Height="35" Margin="383,40,0,0" Stroke="#FF033805" VerticalAlignment="Top" Width="38" RadiusX="50" RadiusY="50">
<Rectangle.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="10"/>
</Rectangle.Effect>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFFFFF1B" Offset="0"/>
<GradientStop Color="#FF29B413" Offset="0.568"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="H5" HorizontalAlignment="Left" Height="35" Margin="426,40,0,0" Stroke="#FF033805" VerticalAlignment="Top" Width="38" RadiusX="50" RadiusY="50">
<Rectangle.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="10"/>
</Rectangle.Effect>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFFFFF1B" Offset="0"/>
<GradientStop Color="#FF29B413" Offset="0.568"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="M0" HorizontalAlignment="Left" Height="35" Margin="211,83,0,0" Stroke="#FF033805" VerticalAlignment="Top" Width="38" RadiusX="50" RadiusY="50">
<Rectangle.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="10"/>
</Rectangle.Effect>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFFFFF1B" Offset="0"/>
<GradientStop Color="#FF29B413" Offset="0.568"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="M1" HorizontalAlignment="Left" Height="35" Margin="254,83,0,0" Stroke="#FF033805" VerticalAlignment="Top" Width="38" RadiusX="50" RadiusY="50">
<Rectangle.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="10"/>
</Rectangle.Effect>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFFFFF1B" Offset="0"/>
<GradientStop Color="#FF29B413" Offset="0.568"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="M2" HorizontalAlignment="Left" Height="35" Margin="297,83,0,0" Stroke="#FF033805" VerticalAlignment="Top" Width="38" RadiusX="50" RadiusY="50">
<Rectangle.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="10"/>
</Rectangle.Effect>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFFFFF1B" Offset="0"/>
<GradientStop Color="#FF29B413" Offset="0.568"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="M3" HorizontalAlignment="Left" Height="35" Margin="340,83,0,0" Stroke="#FF033805" VerticalAlignment="Top" Width="38" RadiusX="50" RadiusY="50">
<Rectangle.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="10"/>
</Rectangle.Effect>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFFFFF1B" Offset="0"/>
<GradientStop Color="#FF29B413" Offset="0.568"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="M4" HorizontalAlignment="Left" Height="35" Margin="383,83,0,0" Stroke="#FF033805" VerticalAlignment="Top" Width="38" RadiusX="50" RadiusY="50">
<Rectangle.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="10"/>
</Rectangle.Effect>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFFFFF1B" Offset="0"/>
<GradientStop Color="#FF29B413" Offset="0.568"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="M5" HorizontalAlignment="Left" Height="35" Margin="426,83,0,0" Stroke="#FF033805" VerticalAlignment="Top" Width="38" RadiusX="50" RadiusY="50">
<Rectangle.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="10"/>
</Rectangle.Effect>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFFFFF1B" Offset="0"/>
<GradientStop Color="#FF29B413" Offset="0.568"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="S0" HorizontalAlignment="Left" Height="35" Margin="211,126,0,0" Stroke="#FF033805" VerticalAlignment="Top" Width="38" RadiusX="50" RadiusY="50">
<Rectangle.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="10"/>
</Rectangle.Effect>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFFFFF1B" Offset="0"/>
<GradientStop Color="#FF29B413" Offset="0.568"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="S1" HorizontalAlignment="Left" Height="35" Margin="254,126,0,0" Stroke="#FF033805" VerticalAlignment="Top" Width="38" RadiusX="50" RadiusY="50">
<Rectangle.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="10"/>
</Rectangle.Effect>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFFFFF1B" Offset="0"/>
<GradientStop Color="#FF29B413" Offset="0.568"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="S2" HorizontalAlignment="Left" Height="35" Margin="297,126,0,0" Stroke="#FF033805" VerticalAlignment="Top" Width="38" RadiusX="50" RadiusY="50">
<Rectangle.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="10"/>
</Rectangle.Effect>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFFFFF1B" Offset="0"/>
<GradientStop Color="#FF29B413" Offset="0.568"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="S3" HorizontalAlignment="Left" Height="35" Margin="340,126,0,0" Stroke="#FF033805" VerticalAlignment="Top" Width="38" RadiusX="50" RadiusY="50">
<Rectangle.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="10"/>
</Rectangle.Effect>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFFFFF1B" Offset="0"/>
<GradientStop Color="#FF29B413" Offset="0.568"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="S4" HorizontalAlignment="Left" Height="35" Margin="383,126,0,0" Stroke="#FF033805" VerticalAlignment="Top" Width="38" RadiusX="50" RadiusY="50">
<Rectangle.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="10"/>
</Rectangle.Effect>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFFFFF1B" Offset="0"/>
<GradientStop Color="#FF29B413" Offset="0.568"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="S5" HorizontalAlignment="Left" Height="35" Margin="426,126,0,0" Stroke="#FF033805" VerticalAlignment="Top" Width="38" RadiusX="50" RadiusY="50">
<Rectangle.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="10"/>
</Rectangle.Effect>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFFFFF1B" Offset="0"/>
<GradientStop Color="#FF29B413" Offset="0.568"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Label Content="Saat" HorizontalAlignment="Left" Height="35" Margin="10,40,0,0" VerticalAlignment="Top" Width="98" Foreground="White"/>
<Label Content="Dakika" HorizontalAlignment="Left" Height="35" Margin="10,83,0,0" VerticalAlignment="Top" Width="98" Foreground="White"/>
<Label Content="Saniye" HorizontalAlignment="Left" Height="35" Margin="10,126,0,0" VerticalAlignment="Top" Width="98" Foreground="White"/>
<Label Content="Binary Clock" HorizontalAlignment="Left" Height="40" Margin="10,0,0,0" VerticalAlignment="Top" Width="150" Foreground="#FF1BB614" FontSize="18" FontWeight="Bold"/>
<Label Content="1" HorizontalAlignment="Left" Height="26" Margin="438,18,0,0" VerticalAlignment="Top" Width="35" Foreground="#FFCFCDCD" FontSize="10"/>
<Label Content="2" HorizontalAlignment="Left" Height="26" Margin="396,18,0,0" VerticalAlignment="Top" Width="30" Foreground="#FFCFCDCD" FontSize="10"/>
<Label Content="4" HorizontalAlignment="Left" Height="26" Margin="353,18,0,0" VerticalAlignment="Top" Width="30" Foreground="#FFCFCDCD" FontSize="10"/>
<Label Content="8" HorizontalAlignment="Left" Height="26" Margin="310,18,0,0" VerticalAlignment="Top" Width="30" Foreground="#FFCFCDCD" FontSize="10"/>
<Label Content="16" HorizontalAlignment="Left" Height="26" Margin="265,18,0,0" VerticalAlignment="Top" Width="40" Foreground="#FFCFCDCD" FontSize="10"/>
<Label Content="32" HorizontalAlignment="Left" Height="26" Margin="220,18,0,0" VerticalAlignment="Top" Width="34" Foreground="#FFCFCDCD" FontSize="10"/>
<Label x:Name="lbHour" Content="00" HorizontalAlignment="Left" Height="31" Margin="174,40,0,0" VerticalAlignment="Top" Width="32" Foreground="#FFFFF9F9"/>
<Label x:Name="lbMinute" Content="00" HorizontalAlignment="Left" Height="31" Margin="174,83,0,0" VerticalAlignment="Top" Width="32" Foreground="#FFFFF9F9"/>
<Label x:Name="lbSeconds" Content="00" HorizontalAlignment="Left" Height="31" Margin="174,126,0,0" VerticalAlignment="Top" Width="32" Foreground="#FFFFF9F9"/>
</Grid>
</Window>
Kod:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// Sets all rectangles opacity to 0.35
foreach (var r in LogicalTreeHelper.GetChildren(MainGrid))
{
if (r is Rectangle) (r as Rectangle).Fill.Opacity = 0.35;
}
// Start a continuous
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// Sets all rectangles opacity to 0.35
foreach (var r in LogicalTreeHelper.GetChildren(MainGrid))
{
if (r is Rectangle) (r as Rectangle).Fill.Opacity = 0.35;
}
// Start a continuous thread
Task.Factory.StartNew(() =>
{
// while the thread is running...
while (true)
{
// ...get the current system time
DateTime _now = System.DateTime.Now;
// Convert each part of the system time (i.e.: hour, minutes, seconds) to binary, filling with 0s up to a length of 6 char each
String _binHour = Convert.ToString(_now.Hour, 2).PadLeft(6, '0');
String _binMinute = Convert.ToString(_now.Minute, 2).PadLeft(6, '0');
String _binSeconds = Convert.ToString(_now.Second, 2).PadLeft(6, '0');
// For each digit of the binary hour representation
try
{
for (int i = 0; i <= _binHour.Length - 1; i++)
{
// Dispatcher invoke to refresh the UI, which belongs to the main thread
H0.Dispatcher.Invoke(() =>
{
// Update the contents of the labels which use decimal h/m/s representation
lbHour.Content = _now.Hour.ToString("00");
lbMinute.Content = _now.Minute.ToString("00");
lbSeconds.Content = _now.Second.ToString("00");
// Search for a rectangle which name corresponds to the _binHour current char index.
// Then, set its opacity to 1 if the current _binHour digit is 1, or to 0.35 otherwise
(MainGrid.FindName("H" + i.ToString()) as Rectangle).Fill.Opacity = _binHour.Substring(i, 1).CompareTo("1") == 0 ? 1 : 0.35;
(MainGrid.FindName("M" + i.ToString()) as Rectangle).Fill.Opacity = _binMinute.Substring(i, 1).CompareTo("1") == 0 ? 1 : 0.35;
(MainGrid.FindName("S" + i.ToString()) as Rectangle).Fill.Opacity = _binSeconds.Substring(i, 1).CompareTo("1") == 0 ? 1 : 0.35;
});
}
}
catch
{ }
}
});
} thread
Task.Factory.StartNew(() =>
{
// while the thread is running...
while (true)
{
// ...get the current system time
DateTime _now = System.DateTime.Now;
// Convert each part of the system time (i.e.: hour, minutes, seconds) to binary, filling with 0s up to a length of 6 char each
String _binHour = Convert.ToString(_now.Hour, 2).PadLeft(6, '0');
String _binMinute = Convert.ToString(_now.Minute, 2).PadLeft(6, '0');
String _binSeconds = Convert.ToString(_now.Second, 2).PadLeft(6, '0');
// For each digit of the binary hour representation
try
{
for (int i = 0; i <= _binHour.Length - 1; i++)
{
// Dispatcher invoke to refresh the UI, which belongs to the main thread
H0.Dispatcher.Invoke(() =>
{
// Update the contents of the labels which use decimal h/m/s representation
lbHour.Content = _now.Hour.ToString("00");
lbMinute.Content = _now.Minute.ToString("00");
lbSeconds.Content = _now.Second.ToString("00");
// Search for a rectangle which name corresponds to the _binHour current char index.
// Then, set its opacity to 1 if the current _binHour digit is 1, or to 0.35 otherwise
(MainGrid.FindName("H" + i.ToString()) as Rectangle).Fill.Opacity = _binHour.Substring(i, 1).CompareTo("1") == 0 ? 1 : 0.35;
(MainGrid.FindName("M" + i.ToString()) as Rectangle).Fill.Opacity = _binMinute.Substring(i, 1).CompareTo("1") == 0 ? 1 : 0.35;
(MainGrid.FindName("S" + i.ToString()) as Rectangle).Fill.Opacity = _binSeconds.Substring(i, 1).CompareTo("1") == 0 ? 1 : 0.35;
});
}
}
catch
{ }
}
});
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// Sets all rectangles opacity to 0.35
foreach (var r in LogicalTreeHelper.GetChildren(MainGrid))
{
if (r is Rectangle) (r as Rectangle).Fill.Opacity = 0.35;
}
// Start a continuous thread
Task.Factory.StartNew(() =>
{
// while the thread is running...
while (true)
{
// ...get the current system time
DateTime _now = System.DateTime.Now;
// Convert each part of the system time (i.e.: hour, minutes, seconds) to binary, filling with 0s up to a length of 6 char each
String _binHour = Convert.ToString(_now.Hour, 2).PadLeft(6, '0');
String _binMinute = Convert.ToString(_now.Minute, 2).PadLeft(6, '0');
String _binSeconds = Convert.ToString(_now.Second, 2).PadLeft(6, '0');
// For each digit of the binary hour representation
try
{
for (int i = 0; i <= _binHour.Length - 1; i++)
{
// Dispatcher invoke to refresh the UI, which belongs to the main thread
H0.Dispatcher.Invoke(() =>
{
// Update the contents of the labels which use decimal h/m/s representation
lbHour.Content = _now.Hour.ToString("00");
lbMinute.Content = _now.Minute.ToString("00");
lbSeconds.Content = _now.Second.ToString("00");
// Search for a rectangle which name corresponds to the _binHour current char index.
// Then, set its opacity to 1 if the current _binHour digit is 1, or to 0.35 otherwise
(MainGrid.FindName("H" + i.ToString()) as Rectangle).Fill.Opacity = _binHour.Substring(i, 1).CompareTo("1") == 0 ? 1 : 0.35;
(MainGrid.FindName("M" + i.ToString()) as Rectangle).Fill.Opacity = _binMinute.Substring(i, 1).CompareTo("1") == 0 ? 1 : 0.35;
(MainGrid.FindName("S" + i.ToString()) as Rectangle).Fill.Opacity = _binSeconds.Substring(i, 1).CompareTo("1") == 0 ? 1 : 0.35;
});
}
}
catch
{ }
}
});
}