Ey DSL! 3 TTNet Son Sürüm


Ey DSL! 3 Ekran Görüntüsü

Ey DSL! 3 Ekran Görüntüsü

Ey DSL! 3 TTNet sürümünü yeniden derledim. En son oluşan hataları gidermeye çalıştım. Ey DSL! Windows Vista' dan ve Windows 7 'den daha önce yazıldığından maalesef bu işletim sistemlerinde hatalar daha fazla oluşmakta. Ey DSL! 4 için tam sırası ama zaman darlığından dolayı adam akıllı projeyi ele alamıyorum. Kusura bakmayın... En son 29 Temmuz 2011 tarihinde yeniden derledim. Giderdiğim hatalar şunlardır:

  • IP adresi sorunu için yeni bir sorgulama adresi daha ekledim. (http://whatismyip.org/) Eğer ilk site çalışmazsa yeni siteden sorgulama yapılacak.
  • 2 GB üzeri RAM olan bilgisayarlarda Monitör bölümünde hafıza yanlış hesaplanıyordu. Düzeltildi.
  • Aktif Ağ Bağdaştırıcısı Pasif duruma geldiğinde yada Windows uyku moduna geçtiğinde ani 4 GB lik bir artış oluyordu. Düzeltildi.

Şimdilik söyleceklerim bu kadar. Ey DSL! 3 TTNet sürümünün en son derlenmiş halini aşağıdan indirebilirsiniz...

eydsl3-ttnet-29-07-11.rar [1,56 MB]

 

Etiketler: , , , , , , , , , ,

Yorumlar (34)

C# ve Analog Clock


C# ve Analog Clock

C# ve Analog Clock

Analog Clock projesinin C# sürümünü yazmamak olmazdı herhalde. Delphi sürümünde yapılan ufak tefek değişikliklerle C# sürümünü elde ettim. Aslında piyasada ne kadar yorumlayıcı (interpreter) varsa hepsinden nefret ediyorum ama C#' a ayrı bir sempatim var. Delphi ile geliştirdiğim programları C#' a çevirme konusunda hiç zorlanmıyorum. Belki de Delphi ve C# aynı elden çıktığı içindir. Malum her iki dilin de geliştiricisi Anders Hejlsberg. Neyse konumuzun dışına çıkmadan proje hakkında bazı bilgiler verelim. Proje Visual Studio 2008 ortamında .NET Framework 3.5 temel alaınarak geliştirildi. Projenin en önemli yordamı PaintElements. Burada bazı matematiksel işlemler mevcut. Akrep, yelkovan ve saniye için açıların hesaplanması işlemlerine dikkat etmeniz gerekiyor. Elbette öncelikle TranslateTransform ve RotateTransform işlemleri iyice anlaşılmalı. MSDN üzerinden okumanızı tavsiye ederim. Diğer matematiksel işlemler hakkında sorun yaşarsanız -ki zannetmiyorum- bana mail atabilirsiniz. PaintElements yordamını aşağıda bulabilirsiniz.


private void PaintElements()
{
/* Acilari su anki saate gore hesapla. */
DateTime Now = DateTime.Now;
int Hour = Now.Hour;
int Minute = Now.Minute;
int Second = Now.Second;
Single AngleS = Second * 6;
Single AngleM = Minute * 6 + AngleS / 60;
Single AngleH = Hour * 30 + AngleM / 12;
/* Orta noktayi ekran genisligine gore bul. */
Single Dx = this.Width / 2 - 1;
Single Dy = this.Height / 2 - 1;
Single Ox = -6; // -13 div 2
Single Oy = -64; // -129 div 2;
/* Cizim alaninin durumunu sakla. */
System.Drawing.Drawing2D.GraphicsState State = FGraphics.Save();
/* Baslangic cizim noktasini formun ortasina konumlandir. */
FGraphics.TranslateTransform(Dx, Dy);
/* Saat parcasini ciz */
FGraphics.RotateTransform(AngleH);
FGraphics.DrawImage(FHour, Ox, Oy, 13, 129);
FGraphics.RotateTransform(-AngleH);
/* Dakika parcasini ciz */
FGraphics.RotateTransform(AngleM);
FGraphics.DrawImage(FMinute, Ox, Oy, 13, 129);
FGraphics.RotateTransform(-AngleM);
/* Saniye parcasini ciz */
FGraphics.RotateTransform(AngleS);
FGraphics.DrawImage(FSecond, Ox, Oy, 13, 129);
FGraphics.RotateTransform(-AngleS);
/* Nokta parcasini ciz */
FGraphics.DrawImage(FDot, Ox, Oy, 13, 129);
/* Cizim alaninin durumunu eski haline getir. */
FGraphics.Restore(State);
}

Analog Clock projesinin C# versiyonunu aşağıdaki linkten indirebilirsiniz.

analog-clock-csharp-source.rar [249 KB]

Etiketler: , , , , , , , , , , , , , , , , , , , , , , , ,

Yorumlar (2)

Delphi ile Analog Clock


Analog Clock Ekran Görüntüsü

Delphi ile Analog Clock

Delphi ile Generic Clock örneği işinizi görmüştür umarım. Generic Clock projesinde yapacağımız küçük bir değişiklikle yeni projeler üretebiliriz aslında. Bilgisayar kullanıcılarının en çok tercih ettiği masaüstü araçlarından biri olan "Analog Clock" bu yazmının konusunu oluşturuyor. Siz Delphi kullanıcıları için elimden geldiği kadar sadeleştirmeye çalıştım. Başlayalım...

1. TASARIM

Delphi ile Analog Clock Tasarımı

Delphi ile Analog Clock Tasarımı

Form tasarımı aşamasında dikkat edilmesi gereken birkaç ufak tefek ayrıntı var. Önceki örneklerde açıkladığım gibi öncelikle ana formun BorderStyle özelliğini bsNone olarak ayarlamalıyız. Diğer önemli kısım ise Sağ Tuş Menüsü eklemek. Programda görselliği bozmamak için "Kapat" düğmesi kullanmadım. Bu yüzden farenin sağ tuşuna bastığımızda içerik menüsüne ihtiyaç duyacağız. Burada programdan çıkış işlemini "Kapat Menüsü" yardımıyla yapacağız. Tasarım aşamasını şöyle özetliyebiliriz:

  • Ama formun Client boyutları saat resminin boyutları ile aynı olacak (ClientWidth = 130, ClientHeight = 130)
  • BorderStyle özelliği bsNone olarak ayarlanacak
  • Ana forma Timer ve PopupMenu bileşenleri eklenecek

Tasarım kısmı bu kadar. Yukarıdaki ekran alıntısında örnek bir görüntü mevcut. Gelelim algoritma kısmına...

2. ALGORITMA

Algoritma kısmında temel çizim işlemlerinden bahsetmeyeceğim. Bu konulara daha önceki örnekte değinmiştim. Fakat açıklanması gereken önemli bir kısım var:  Akrep, yelkovan ve saniye gibi saati oluşturan parçaların çizilmesi... Temel olarak bu parçalar belli bir eksen etrafında belirli açılarla dönerler. Bu açılar saatin kaç olduğuna göre değişmektedir. Örnegin Akrep çizimi için saatin 03:00:00 olduğu durumda 45 derecelik açı ile çizilmesi gerekmektedir. Bu hesaplamalar basit matematik işlemlerinden başkası değildir. Bu projede açı hesaplamalarını PaintElements prosedürü içine yerleştirdim. Aşağıdaki kod parçasını incelemekte fayda var sanırım.

procedure TForm1.PaintElements;
var
Hour, Minute, Second, MSec: Word;
State: GraphicsState;
Dx, Dy, Ox, Oy: Single;
AngleS, AngleM, AngleH: Single;
begin
{ Acilari su anki saate gore hesapla. }
DecodeTime(SysUtils.Now, Hour, Minute, Second, MSec);
AngleS := Second * 6;
AngleM := Minute * 6 + AngleS / 60;
AngleH := Hour * 30 + AngleM / 12;
{ Orta noktayi ekran genisligine gore bul. }
Dx := Self.Width / 2 - 1;
Dy := Self.Height / 2 - 1;
Ox := -6; // -13 div 2
Oy := -64; // -129 div 2
with FGraphics do
begin
{ Cizim alaninin durmunu sakla. }
State := Save();
{ Baslangic cizim noktasini formun ortasina konumlandir. }
TranslateTransform(Dx, Dy);
{ Saat parcasini ciz }
RotateTransform(AngleH);
DrawImage(FHour, Ox, Oy, 13, 129);
RotateTransform(-AngleH);
{ Dakika parcasini ciz }
RotateTransform(AngleM);
DrawImage(FMinute, Ox, Oy, 13, 129);
RotateTransform(-AngleM);
{ Saniye parcasini ciz }
RotateTransform(AngleS);
DrawImage(FSecond, Ox, Oy, 13, 129);
RotateTransform(-AngleS);
{ Nokta parcasini ciz }
DrawImage(FDot, Ox, Oy, 13, 129);
{ Cizim alaninin durumunu eski haline getir. }
Restore(State);
end;
end;

GDI+ ile belirli bir açıda resim çizme işlemi biraz karışıktır. Dikkat edilmesi gereken en önemli kısım çizim alanımızın başlangıç kooardinatlarının ayarlanması. Varsayılan olarak başlangış koordinatları (0, 0) sol üst köşe olarak seçilmiştir. Buradaki örnekte Dx, Dy değişkenleri formun orta noktasına işaret ediyor. GDI+ ile başlangış koordinatlarını değiştirmek için TranslateTransform fonksiyonunu kullanmamız gerekiyor. Başlangıç koordinatlarını (0, 0) noktasından (Dx, Dy) noktasına taşıyoruz. Açıklanması gereken önemli bir kısım ise resimlerin çizilirken başlangıç noktasına göre yeni koordinatlarının hesaplanması işlemi. Örneğimizde Ox ve Oy değişkenlerini bunun için kullanancağız. Akrep ve yelkovan resimlerimizin boyutları 13x129 piksel olduğundan bu resimlerin orta noktası tam sayı olarak (6,64) olacaktır. Fakat Transform işleminden dolayı resmin orta noktası (-6, -64) olacaktır. Açı hesaplamaları kaynak kod içinden anlaşılabilir durumda. Bu bölüme değinmeğe gerek yok sanırım. Eğer Transform ve Rotate işlemleri sırasında sorun yaşarsanız bana mail atabilirsiniz. Şimdilik bu proje hakkında söyleyeceklerim bu kadar. Analog Clock projesinin kaynak kodunu aşağıdaki linkten indirebilirsiniz.

Analog Clock Kaynak Kod İndir analog-clock-source.rar [366 KB]

Etiketler: , , , , , , , , , , , , , , ,

Yorum Yapın

Sayfa: << 1 2 3 ...6 7 8 9 10 ...34 35 36 >>