Jak mogę odzyskać rozdzielczość ekranu, na której działa moja aplikacja WinForm C#?Jak odzyskać rozdzielczość ekranu z aplikacji C# winform?
Odpowiedz
Potrzebujesz tylko obszaru używanego przez standardową aplikację, tj. Z wyłączeniem paska zadań systemu Windows i zadokowanych okien? Jeśli tak, użyj Screen.WorkingArea property. W przeciwnym razie użyj Screen.Bounds.
Jeśli istnieje wiele monitorów, trzeba chwycić ekran z formularza, tj
Form myForm;
Screen myScreen = Screen.FromControl(myForm);
Rectangle area = myScreen.WorkingArea;
Jeśli chcesz wiedzieć, co jest ekran podstawowy, należy użyć właściwości Screen.Primary. Możesz również uzyskać listę ekranów z właściwości Screen.AllScreens.
Użyj klasy Ekran i przeszukaj właściwość Bounds. Klasa Screen ma właściwość statyczną dla Primary Screen i inną właściwość statyczną, która zwraca a list of all the screens attached to the system.
+1 za link do Screen.AllScreens. – ToolmakerSteve
Screen.PrimaryScreen.WorkingArea.Size()
Podana odpowiedź jest poprawna, tak dalece jak to idzie. Jednak po ustawieniu rozmiaru tekstu na wartość większą niż 125%, system Windows (i .NET) zacznie kręcić o rozmiar ekranu, aby wykonać automatyczne skalowanie.
W większości przypadków nie jest to problemem - zazwyczaj chcesz, aby to zrobił system Windows i .NET. Jednak w przypadku, gdy naprawdę potrzebujesz znać rzeczywistą liczbę pikseli na ekranie (powiedzmy, że chcesz malować bezpośrednio na DC komputera), możesz wykonać następujące czynności. Próbowałem tego tylko na Win10. YMMV w innych wersjach systemu Windows.
Do tej pory jest to jedyny sposób, w jaki udało mi się uzyskać rzeczywistą liczbę pikseli na ekranie, jeśli nie chcesz całkowicie wyłączać świadomości DPI w swojej aplikacji. Zwróć uwagę, że ten przykład pobiera główny rozmiar ekranu - musisz go zmodyfikować, aby uzyskać inne ekrany.
[DllImport("User32.dll")]
static extern IntPtr GetDC(IntPtr hwnd);
[DllImport("User32.dll")]
static extern int ReleaseDC(IntPtr hwnd, IntPtr dc);
[DllImport("gdi32.dll")]
static extern int GetDeviceCaps(IntPtr hdc, int nIndex);
IntPtr primary = GetDC(IntPtr.Zero);
int DESKTOPVERTRES = 117;
int DESKTOPHORZRES = 118;
int actualPixelsX = GetDeviceCaps(primary, DESKTOPHORZRES);
int actualPixelsY = GetDeviceCaps(primary, DESKTOPVERTRES);
ReleaseDC(IntPtr.Zero, primary);
- 1. Jak uzyskać rozdzielczość ekranu? Dla aplikacji WinRT?
- 2. Cel C - jak uzyskać aktualną rozdzielczość ekranu?
- 3. Jak uzyskać rozdzielczość ekranu w C++?
- 4. Programowanie Androida - rozdzielczość ekranu
- 5. Wychodzenie z aplikacji WinForm C#
- 6. Rozdzielczość ekranu Silverlight
- 7. Pobierz programowo rozdzielczość ekranu w OS X
- 8. Uzyskaj natywną rozdzielczość ekranu
- 9. jak uzyskać rozdzielczość ekranu użytkownika z PHP
- 10. Spoofing/fałszywa rozdzielczość ekranu?
- 11. jak zablokować GUI aplikacji w C# Winform
- 12. w aplikacji na iPhone'a Jak wykryć rozdzielczość ekranu urządzenia
- 13. Rozdzielczość ekranu na stronie mobilnej
- 14. XNA - Uzyskaj rozdzielczość ekranu bieżącego
- 15. Android miejsca: Ustaw rozdzielczość ekranu
- 16. Jak mogę uzyskać rozdzielczość ekranu w R
- 17. C# app.config in winform
- 18. Jak uzyskać rozdzielczość ekranu urządzenia z systemem Android ..?
- 19. Otwórz WinForm z aplikacji WPF?
- 20. Jak zmienić rozmiar jframe na rozdzielczość ekranu w netbeans?
- 21. Galaxy Tab 10.1 Rozdzielczość ekranu (- pasek menu)
- 22. Uzyskaj natywną rozdzielczość ekranu za pomocą jQuery
- 23. C++ Rozdzielczość Nazwa
- 24. Pisanie wyjścia do konsoli z aplikacji C# WinForm
- 25. C# Domyślna rozdzielczość zakresu
- 26. jak wykreślić postać Matlaba wewnątrz aplikacji WinForm?
- 27. Jak uzyskać rozdzielczość ekranu w systemie Android Honeycomb?
- 28. Pozycja WinForm w lewym dolnym rogu ekranu
- 29. Jak dodać pomoc do winform C# application
- 30. Wdrażanie aplikacji WinForm z osadzonym sqlite
+1 dla Screen.WorkingArea. Przez pomyłkę korzystałem z Screen.Bounds. Dałbym ci +2, gdybym mógł, za wzmiankę o Screen.FromControl zamiast Screen.PrimaryScreen! – ToolmakerSteve