none
Kodlarla Ekranın Kaç İNÇ Olduğunu Öğrenmek RRS feed

  • Soru

  • Ekranın kaç inç olduğunu öğrenmek için kod varmıdır.

    Veya Kodlarla bazı hesaplamalar yapıp kaç inç olduğunu bulabilirmiyiz.

    C# biliyorum ama diğer programlama dilleriylede kod olabilir.

    Böyle birşey varmı öğrenmek istiyorum.

    19 Şubat 2019 Salı 19:02

Yanıtlar

  • İlk yanıtımda sadece nasıl yapılacağına dair yol göstermiştim.

    Çözüm için gereken kodların tamamını paylaşma gereği duydum.

    Bu kodları kullanarak ekranın kaç inç olduğunu öğrenebilirsiniz.

    [DllImport("gdi32.dll")]
    static extern int GetDeviceCaps(IntPtr hdc, int nIndex);
    
    private void Button1_Click(object sender, EventArgs e)
    {
        Graphics g = Graphics.FromHwnd(IntPtr.Zero);
        IntPtr desktop = g.GetHdc();
        int yukseklikMM = GetDeviceCaps(desktop, 6);
        int genislikMM = GetDeviceCaps(desktop, 4);
        label1.Text = $"Yükseklik: {yukseklikMM} mm., Genişlik: {genislikMM} mm. Ekranınız: {Math.Sqrt(Math.Pow(yukseklikMM, 2) + Math.Pow(genislikMM, 2))/25,4:#,##0.00} inç.";
    }


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak Öneren Egoist Developer 22 Şubat 2019 Cuma 20:15
    • Yanıt Olarak İşaretleyen HakanÇtn 23 Şubat 2019 Cumartesi 18:31
    20 Şubat 2019 Çarşamba 07:36

Tüm Yanıtlar

  • Merhaba Hakan bey,

    Açıkcası bunu neden istiyorsunuz anlamadım ? Maksat ölçeklenmekse , 10 inçlik bir ekran da 20 inçlik bir ekranda 1024x800 çözünürlüğüne sahip olabilir.Sizin programınızı ilgilendiren çözünürlük olduğundan inç değeri sizin işinize bu durumda yaramaz.

    inç = pixel / dpi olarak hesaplanır.

    Hesaplama konusunda şu link yardımcı olur.



    19 Şubat 2019 Salı 19:22
  • Ekranın boyutu küçük ve çözünürlüğü yüksek olanda Programım küçük görünüyor.

    Programın boyutunu çözünürlülük ölçeğine göre değil

    Ekranın boyutana göre ayarlamak istiyorum.

    Bu şekilde yapılabileceğini düşündüm.

    Kodlarla örnek verebilirmisiniz.

    Dpi kodla nasıl bulunur.

    Yardım etmeye çalıştığınız için Teşekkür ederim.









    • Düzenleyen HakanÇtn 19 Şubat 2019 Salı 21:24
    19 Şubat 2019 Salı 20:57
  • Ekranın boyutu küçük ve çözünürlüğü yüksek olanda Programım küçük görünüyor.

    Programın boyutunu çözünürlülük ölçeğine göre değil

    Ekranın boyutana göre ayarlamak istiyorum.

    Bu şekilde yapılabileceğini düşündüm.

    Kodlarla örnek verebilirmisiniz.

    Yardım etmeye çalıştığınız için Teşekkür ederim.








          Anladım ancak bende diyorum ki inçin bir önemi yok kullanıcının kullandığı çözünürlük önemli.Dediğinizi anladım ancak o şekilde manuel olarak bu ayarlamaları yapmak hem stabil olmaz hemde sizi çok uğraştırır.

    Ne kullanıyorsunuz ? Winforms? WPF ? Ben şahsen wpf ye geçerek bu ekran boyutu probleminden kurtuldum , winform içinde bazı çözümler var daha karmaşık ve kullanışsız tabi ki.

    19 Şubat 2019 Salı 21:26
  • GetDeviceCaps metodunu kullanabilirsiniz.

    int yukseklikMM = GetDeviceCaps(GetDC(GetDesktopWindow), VERTSIZE);
    int genislikMM = GetDeviceCaps(GetDC(GetDesktopWindow), HORZSIZE);

    Ekran boyutunu,

    karekök(karşı kenar uzunluğunun karesi + komşu kenar uzunluğunun karesi)/2.54

    formülü ile inç cinsinden elde edebilirsiniz.


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    19 Şubat 2019 Salı 21:55
  • Ekranın kaç inç olduğunu öğrenemezsin.

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    20 Şubat 2019 Çarşamba 06:35
  • İlk yanıtımda sadece nasıl yapılacağına dair yol göstermiştim.

    Çözüm için gereken kodların tamamını paylaşma gereği duydum.

    Bu kodları kullanarak ekranın kaç inç olduğunu öğrenebilirsiniz.

    [DllImport("gdi32.dll")]
    static extern int GetDeviceCaps(IntPtr hdc, int nIndex);
    
    private void Button1_Click(object sender, EventArgs e)
    {
        Graphics g = Graphics.FromHwnd(IntPtr.Zero);
        IntPtr desktop = g.GetHdc();
        int yukseklikMM = GetDeviceCaps(desktop, 6);
        int genislikMM = GetDeviceCaps(desktop, 4);
        label1.Text = $"Yükseklik: {yukseklikMM} mm., Genişlik: {genislikMM} mm. Ekranınız: {Math.Sqrt(Math.Pow(yukseklikMM, 2) + Math.Pow(genislikMM, 2))/25,4:#,##0.00} inç.";
    }


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak Öneren Egoist Developer 22 Şubat 2019 Cuma 20:15
    • Yanıt Olarak İşaretleyen HakanÇtn 23 Şubat 2019 Cumartesi 18:31
    20 Şubat 2019 Çarşamba 07:36
  • Sakın piksellerin boyutlarını öğrenmeden yukarıdaki gibi kodlarla bu işlere kalkışmayın, rezil olmayın millete :)

    Screen static classında çözünürlük ile ilgili tüm gereken şeyler var uzatmaya ve uzatmada diretmeye gerek yok.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    20 Şubat 2019 Çarşamba 09:18
  • Denemekle, "Ben yapamıyorsam, kimse yapamaz" zihniyetinden daha kötü bir duruma düşmezsiniz.

    Biri olmaz diyor diye vazgeçmeyin. Deneyin...

    Microsoft dökümanlarında GetDeviceCaps kulanımı anlatılmış.

    Parametreler içerisinde milimetre cinsinden sonuç döndüren VERTSIZE ve HORZSIZE değerleri verilmiş.

    Kullanılmamak üzere hazırladıklarını sanmıyorum.


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Düzenleyen MuratAKSARAY 20 Şubat 2019 Çarşamba 09:48 Ek...
    20 Şubat 2019 Çarşamba 09:44
  • yardımlarınız için teşekkür ederim.
    23 Şubat 2019 Cumartesi 19:01