2012-10-07 14 views
6

użyłem 16x16 px Zdjęcia w mojej aplikacji, tak aby uzyskać ostre krawędzie i bez automatycznej zmiany rozmiaru i przy standardowym ustawieniu DPI 96.Użyj innego obrazu w zależności od DPI komputera zachodzącego

Gdy zmienia się użytkownik ich Ustawienie dpi, obrazy są powiększane, a ponieważ pliki źródłowe mają tylko 16x16, wyglądają naturalnie źle. Czy istnieje sposób, w jaki mogę zapewnić wiele obrazów dla konkretnego źródła obrazu, a najlepszy zostanie wybrany automatycznie? Na przykład dostarczam obrazy o rozmiarach 16x16, 20x20 i 24x24 pikseli, gdy rozmiar obrazu to 16x16 [wpf jednostek], więc mam jedno idealne dopasowanie dla 96, 120 i 144 dpi?

Odpowiedz

0

Najlepsze co mogę zrobić, to ustawić image source dynamically w czasie wykonywania na podstawie ustawień DPI systemu. W kodzie z opóźnieniem można ustawić dynamicznie podoba -

ImageViewer1.Source = new BitmapImage(new Uri(@"\\myserver\\folder1\\sample.png")); 

Posłuchaj tego zdarzenia w klasie, aby otrzymywać powiadomienia o ustawieniach DPI zmienionych komputera - Microsoft.Win32.SystemEvents.DisplaySettingsChanged. Szczegóły nim można znaleźć tutaj - System Events

Ponadto, można uzyskać wartość System dpi przy użyciu następującego kodu -

float dpiX, dpiY; 
Graphics graphics = this.CreateGraphics(); 
dpiX = graphics.DpiX; 
dpiY = graphics.DpiY; 

przenieść tę logikę do nieruchomości i na podstawie wartości nieruchomości, dynamicznie ustawić Źródło obrazu.

Powiązane problemy