Gönderen Konu: Aceminin C# sorulari  (Okunma sayısı 58552 defa)

Çevrimdışı vitruvius

  • Emektar
  • *****
  • İleti: 813
Ynt: Aceminin C# sorulari
« Yanıtla #240 : 21 Şubat 2016, 06:21:50 »
Tam olarak anlamadım. Yapmak istediğiniz şey; mesela button1'a basınca chart1'e bir dosyadan okuduğum sıcaklık verisini çizsin. Button2'ye basınca da yine aynı chart1'e başka bir dosyadan okuyacağım gerilim değerini çizsin, gibi bir şey mi?

chart1.refresh() methodunu kullanabilirsiniz tekrar çizdirmek için.

Çevrimdışı Mucit23

  • Profesyonel Üye
  • *****
  • İleti: 5556
    • www.arectron.com/
Ynt: Aceminin C# sorulari
« Yanıtla #241 : 21 Şubat 2016, 07:33:53 »
Yok hocam öyle değil

buton_1 e basınca chart1 e txt dosyasindan veriyi okuyup basıyorum. Sonra başka bir txt dosyası açıyorum.  Tekrar buton_1 e basınca yeni dosyadaki veriler charta basilmiyor.

Çevrimdışı vitruvius

  • Emektar
  • *****
  • İleti: 813
Ynt: Aceminin C# sorulari
« Yanıtla #242 : 21 Şubat 2016, 10:11:20 »
Değerleri güncelledikten sonra chart1.refresh() methodunu kullanmayı denedin mi? Bu method chart'ın yeni değerlerle tekrar çizilmesine zorlar.

Yada öncesinde chart'ı aşağıdaki gibi temizleyebilirsin.

Kod: [Seç]
foreach(var series in chart1.Series)
{
    series.Points.Clear();
}

Bunlar da olmazsa sorununu gösteren minimum uzunlukta bir projeyi yollarsan akşam bakarım.

Çevrimdışı Mucit23

  • Profesyonel Üye
  • *****
  • İleti: 5556
    • www.arectron.com/
Ynt: Aceminin C# sorulari
« Yanıtla #243 : 22 Şubat 2016, 01:37:10 »
Hocam eski noktaları silmek işe yaradı. Teşekkür ederim. Yeni veri göndermeden önce eskisini siliyorum verdiğiniz kod ile. Tekrardan teşekkürler.

Çevrimdışı Mucit23

  • Profesyonel Üye
  • *****
  • İleti: 5556
    • www.arectron.com/
Ynt: Aceminin C# sorulari
« Yanıtla #244 : 22 Şubat 2016, 05:42:56 »
Bir soru daha sormak istiyorum.

C# da formun ekran görüntüsünü resim olarak kaydetmek istiyorum. Biraz araştırdım internette ekran görüntüsü alan birkaç yazı buldum. Denedim yaptımda aslında ama kordinatlar tam uyuşuyor. Farklı yerlerin ekran görüntüsü alınıyor.

Ekran görüntüsü alıp kaydetmek için aşağıdaki kodları kullandım. Butona basınca Screenshot adında bir bitmap nesnesi oluşturuluyor. Ardından GFX.CopyFromScreen fonksiyonu ile ekran görüntüsü alınıyor. Yalnız parametrelerde yanlışlık olsa gerekki yanlış kordinatlar alınıyor.

Kod: [Seç]
        private void button3_Click(object sender, EventArgs e)
        {
            //Screen.PrimaryScreen.Bounds.Width,Screen.PrimaryScreen.Bounds.Height
            Bitmap Screenshot = new Bitmap(Form1.ActiveForm.Width,Form1.ActiveForm.Height);

            Graphics GFX = Graphics.FromImage(Screenshot);

            //Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size
            GFX.CopyFromScreen(Form1.ActiveForm.Location.X,Form1.ActiveForm.Location.Y,0,0,Form1.ActiveForm.Size);

            SaveFileDialog resim = new SaveFileDialog();
            resim.ShowDialog();

            Screenshot.Save(resim.FileName + ".jpg");

        }

Bu  GFX.CopyFromScreen fonksiyonuna gönderilen parametreler nasıl olmalı?

Çevrimdışı Karamel

  • Profesyonel Üye
  • *****
  • İleti: 1534
  • Success doesn't come to you. You go to it..!
Ynt: Aceminin C# sorulari
« Yanıtla #245 : 22 Şubat 2016, 06:43:11 »


sanirim bu isinizi gorebilir hocam? (muzigin sesi rahatsizlik verebilir)

Çevrimdışı vitruvius

  • Emektar
  • *****
  • İleti: 813
Ynt: Aceminin C# sorulari
« Yanıtla #246 : 22 Şubat 2016, 06:58:23 »
CopyFromScreen e bakarsan gözden kaçan ama çok önemli bir detay var.

Alıntı
Performs a bit-block transfer of color data, corresponding to a rectangle of pixels, from the screen to the drawing surface of the Graphics.

Yani bu methoda aktaracağın parametreler senin bilgisayar ekranındaki koordinatlar olmalı, formdaki değil.

Peki, form'daki koordinatımın ekranda neresi olduğunu nasıl bulacağım dersen;

PointToScreen methodu var.

Diyelim ki formumuzda bir picturebox olsun ve butona bastığımızda bunun ekran görüntüsünü almak isteyelim.

İlk satırda picturebox'ın sınırlarını bulduktan sonra ikinci satırda da bilgisayar ekranındaki koordinatlarını buluyoruz. Gerisi resim alma ve kaydetme.

Kod: [Seç]
private void button1_Click(object sender, EventArgs e)
        {
            Rectangle bounds = pictureBox1.Bounds;
            Point location = pictureBox1.PointToScreen(Point.Empty);

            using(Bitmap myBitmap = new Bitmap(bounds.Width, bounds.Height))
            {
                using(Graphics g = Graphics.FromImage(myBitmap))
                {
                    g.CopyFromScreen(location, Point.Empty, bounds.Size);
                }
                myBitmap.Save("test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
            }
        }

Çevrimdışı Mucit23

  • Profesyonel Üye
  • *****
  • İleti: 5556
    • www.arectron.com/
Ynt: Aceminin C# sorulari
« Yanıtla #247 : 22 Şubat 2016, 08:04:15 »
Selamlar. Şimdi videoya bakıyordum.

Hocam bende picturebox yok. Doğrudan hafızada bir bitmap oluşturup o bitmap'ı kaydetmem gerekir.

Anladığım kadarıyla copyfromscren sadece  bilgisayar ekranında işe yarıyor. Dolayısıyla formun bilgisayar ekranındaki  kordinatlarını bulmam gerek. PointToScreen fonksiyonunu form için nasıl kullanırım?

Çevrimdışı Karamel

  • Profesyonel Üye
  • *****
  • İleti: 1534
  • Success doesn't come to you. You go to it..!
Ynt: Aceminin C# sorulari
« Yanıtla #248 : 22 Şubat 2016, 08:17:11 »
ustadim. size tam olarak ne lazim? videodaki adam. new bitmap olusturarak form un screenshot ini aliyor iste?

Çevrimdışı vitruvius

  • Emektar
  • *****
  • İleti: 813
Ynt: Aceminin C# sorulari
« Yanıtla #249 : 22 Şubat 2016, 08:17:56 »
Picturebox'lı örnek vermemin sebebi belli bir alandaki görüntüyü yakalamak istersen diyeydi. Form görüntüsünü yakalamak istiyorsan Control.DrawToBitmap'i kullanabilirsin.

Kod: [Seç]
private void button2_Click(object sender, EventArgs e)
        {
            var myForm = Form.ActiveForm;
            using (var myBitmap = new Bitmap(myForm.Width, myForm.Height))
            {
                myForm.DrawToBitmap(myBitmap, new Rectangle(0, 0, myBitmap.Width, myBitmap.Height));
                myBitmap.Save("form.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
            }
        }

Çevrimdışı Mucit23

  • Profesyonel Üye
  • *****
  • İleti: 5556
    • www.arectron.com/
Ynt: Aceminin C# sorulari
« Yanıtla #250 : 22 Şubat 2016, 08:55:54 »
PictureBox'ı anlamamıştım aslında ama şimdi olayı anladım gibi.

Teşekkürler @vitruvius, Teşekkürler @Karamel

Çevrimdışı Mucit23

  • Profesyonel Üye
  • *****
  • İleti: 5556
    • www.arectron.com/
Ynt: Aceminin C# sorulari
« Yanıtla #251 : 10 Ağustos 2017, 08:15:46 »
Selamlar

c# ile ilgili ufak bir sorum olacak
C# 'da  DateTime.Now.ToLongTimeString(); yapısı ile string olarak "21:14:32" formatında anlık saat bilgisini alıyorum. Ben bunu byte byte almak istiyorum. Örneğin Saat bilgisini 1 Byte, Dakika bilgisini 1 Byte, ve Saniye bilgini 1 Byte olacak şekilde nasıl alabilirim?

Çevrimdışı Hadi

  • Kıdemli
  • ****
  • İleti: 172
    • - Hadi -
Ynt: Aceminin C# sorulari
« Yanıtla #252 : 10 Ağustos 2017, 08:23:26 »
Selamlar

c# ile ilgili ufak bir sorum olacak
C# 'da  DateTime.Now.ToLongTimeString(); yapısı ile string olarak "21:14:32" formatında anlık saat bilgisini alıyorum. Ben bunu byte byte almak istiyorum. Örneğin Saat bilgisini 1 Byte, Dakika bilgisini 1 Byte, ve Saniye bilgini 1 Byte olacak şekilde nasıl alabilirim?

Kod: [Seç]
byte saat   = Convert.ToByte(DateTime.Now.Hour);
byte dakika = Convert.ToByte(DateTime.Now.Minute);
byte saniye = Convert.ToByte(DateTime.Now.Second);

Çevrimdışı Mucit23

  • Profesyonel Üye
  • *****
  • İleti: 5556
    • www.arectron.com/
Ynt: Aceminin C# sorulari
« Yanıtla #253 : 11 Ağustos 2017, 06:15:38 »
@Hadi Teşekkürler