C# form büyüdüğünde nesnelerin büyümesi nasıl yapılır?

[CODE lang="csharp" title="C#"]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
using System.IO;

namespace Kronometre
{
public partial class Form1 : Form
{
public string zaman;
public bool bağlantı_durumu = false;
public int monitör_yükseklik = System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Width;
public int monitör_genişlik = System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Height;
string[] ports = SerialPort.GetPortNames();

public Form1()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false;
}

private void Form1_Load(object sender, EventArgs e)
{
foreach (var item in ports)
{
port_combo.Items.Add(item);
}

if (serialPort1.IsOpen)
{
serialPort1.Close();
}
}

private void Form1_Resize(object sender, EventArgs e)
{
backgroundWorker2.RunWorkerAsync();
}

private void button1_Click(object sender, EventArgs e)
{
if (port_combo.SelectedItem == null)
{
MessageBox.Show("Bağlantı Noktası Seçiniz", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
serialPort1.PortName = port_combo.SelectedItem.ToString();
try
{
serialPort1.Open();
}
catch (Exception)
{
MessageBox.Show("Bağlantı Noktasını Kontrol Ediniz", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}

backgroundWorker1.RunWorkerAsync();

}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
if (serialPort1.IsOpen)
{
port_control.Text = "Bağlı";
while (true)
{
string okunan_değer = serialPort1.ReadLine();

try
{
int sure = Convert.ToInt32(okunan_değer);
sure = sure / 10;
int salise = sure % 100, saliseOnlar = salise / 10, saliseBirler = salise % 10;
int saniye = (sure % 6000) / 100, saniyeOnlar = saniye / 10, saniyeBirler = saniye % 10;
int dakika = sure / 6000, dakikaOnlar = dakika / 10, dakikaBirler = dakika % 10;

krono_durum_label.Text = "Başlatıldı";

zaman = (dakikaOnlar.ToString()) + (dakikaBirler.ToString()) + ":" + (saniyeOnlar.ToString()) + (saniyeBirler.ToString()) + ":" + (saliseOnlar.ToString()) + (saliseBirler.ToString());

if (Convert.ToInt32(okunan_değer) == 7)
{
krono_durum_label.Text = "Durduruldu";
break;
}

}
catch (Exception)
{

}

main_label.Text = zaman;
}

}
}

private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
{
if (WindowState == FormWindowState.Maximized)
{
main_label.Location = new Point((monitör_genişlik / 4) - 50, (monitör_yükseklik / 4) - 50);
main_label.Font = new Font("Mongolian Baiti", 200, FontStyle.Bold);
}

if (WindowState == FormWindowState.Normal)
{
main_label.Location = new Point(0, 250);
main_label.Size = new Size(650, 160);
main_label.Font = new Font("Mongolian Baiti", 112, FontStyle.Bold);

}
}

private void button2_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen)
{
serialPort1.Close();
}


krono_durum_label.Text = "Hazır";
port_control.Text = "Bağlı Değil";
main_label.Text = "00:00:00";
}
}
}
[/CODE]



[CODE lang="cpp" title="Arduino"]#include <LiquidCrystal.h>
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
int mz80 = 7 ;
int reset_but = 8 ;
int reset_pin = 10 ;


long tBaslangic=0;
int durum=0;
long anlikSure=0;
bool kronometre_aktif = false ;


void setup()
{
Serial.begin(9600);
digitalWrite(reset_pin,HIGH);
pinMode(reset_pin,OUTPUT);
pinMode(reset_but,INPUT);
pinMode(mz80,INPUT);
lcd.begin(16, 2);

lcd.setCursor(0,0);
lcd.print("Kronometre !");
lcd.setCursor(0,1);


while(true)
{
if(digitalRead(mz80) == 0)
{
tBaslangic=millis();
durum = 1;
lcd.clear();
break;
}
}
}

void loop()
{
switch(durum)
{
case 1 :
{
Serial.println(anlikSure);
anlikSure=millis()-tBaslangic;
SureGoster(anlikSure,0,1);
if(digitalRead(mz80) == 0 && anlikSure > 500)
{
durum = 2 ;
}
break;
}

case 2 :
{
SureGoster(anlikSure,0,1);
Serial.println(7);
durum = 3 ;
}

case 3 :
{
if (digitalRead(8)==1)
{
digitalWrite(reset_pin,LOW);
}

}

}


if(durum == 1)
{
lcd.setCursor(0,0);
lcd.print("Baslatildi");
}


if(durum == 2)
{
lcd.setCursor(0,0);
lcd.print("Durduruldu");
}

}






void SureGoster(long sure,int kursorSutun,int kursorSatir)
{
sure=sure/10;
int salise=sure%100, saliseOnlar=salise/10, saliseBirler=salise%10;
int saniye=(sure%6000)/100, saniyeOnlar=saniye/10, saniyeBirler=saniye%10;
int dakika=sure/6000, dakikaOnlar=dakika/10, dakikaBirler=dakika%10;
lcd.setCursor(kursorSutun,kursorSatir);lcd.print(dakikaOnlar);
lcd.setCursor(kursorSutun+1,kursorSatir);lcd.print(dakikaBirler);
lcd.setCursor(kursorSutun+2,kursorSatir);lcd.print(":");
lcd.setCursor(kursorSutun+3,kursorSatir);lcd.print(saniyeOnlar);
lcd.setCursor(kursorSutun+4,kursorSatir);lcd.print(saniyeBirler);
lcd.setCursor(kursorSutun+5,kursorSatir);lcd.print(":");
lcd.setCursor(kursorSutun+6,kursorSatir);lcd.print(saliseOnlar);
lcd.setCursor(kursorSutun+7,kursorSatir);lcd.print(saliseBirler);
}
[/CODE]
 
C#:
int sure = Convert.ToInt32(okunan_değer);
                       
                        int salise = (sure/10) % 100;
                        int saniye = (sure / 1000) % 60;
                        int dakika = (sure / 1000)/60;

                        krono_durum_label.Text = "Başlatıldı";

                        zaman = dakika.ToString("00") + ":" + saniye.ToString("00") + ":" + salise.ToString("00");

Bu kısımları bu şekilde değiştirmeyi deneyin. Değerleri milisaniye cinsinden aldığınızı tahmin ederek yazdım.
main_label.Text = zaman; bu kısmı da try bloğunun içine almayı deneyin hocam.
 
Son düzenleme:
Hocam dediklerinizi uyguladım ve şöyle bir şey fark ettim.
Şimdi ben labelin ekranda küçük durmaması için fontu 100-200 arasına alıyordum bu yüzden de gecikme oluyormuş. Yani fontu 72'ye sabitlediğimde ne tam ekranda ne de normal boyutunda gecikme oluyor. Ancak ekran çok küçük kalıyor bunu düzeltebilir miyim?
Bir de kronometre durunca "Arduino" ki sayaç atıyorum"00:02:35" gösteriyorsa "C#" da ki sayac "00:02:34" falan gösteriyor yani 1 2 salise fark oluyor bunu çözebilir miyim?
 
Hocam dediklerinizi uyguladım ve şöyle bir şey fark ettim.
Şimdi ben labelin ekranda küçük durmaması için fontu 100-200 arasına alıyordum bu yüzden de gecikme oluyormuş. Yani fontu 72'ye sabitlediğimde ne tam ekranda ne de normal boyutunda gecikme oluyor. Ancak ekran çok küçük kalıyor bunu düzeltebilir miyim?
Bir de kronometre durunca "Arduino" ki sayaç atıyorum"00:02:35" gösteriyorsa "C#" da ki sayac "00:02:34" falan gösteriyor yani 1 2 salise fark oluyor bunu çözebilir miyim?

Ne desem yalan olur hocam deneme yanılma yöntemini kullanmak gerekir diye düşünüyorum.
 

Geri
Yukarı