2012-10-07 25 views
6

Tôi đã sử dụng 16x16 hình ảnh px trong ứng dụng của tôi, để tôi có được các cạnh sắc nét dpi của máy tính và không thay đổi kích thước tự động tại các thiết lập dpi tiêu chuẩn 96.Sử dụng một hình ảnh khác nhau tùy thuộc vào thiết lập

Khi người dùng thay đổi của họ dpi thiết lập, các hình ảnh được mở rộng, và kể từ khi các tập tin nguồn chỉ 16x16, họ trông tự nhiên xấu. Có cách nào tôi có thể cung cấp nhiều hình ảnh cho một nguồn hình ảnh cụ thể hay không và cách tốt nhất sẽ được chọn tự động? Ví dụ: tôi cung cấp hình ảnh có kích thước 16x16, 20x20 và 24x24 pixel, khi kích thước của hình ảnh là 16x16 [đơn vị wpf], vì vậy tôi có một kết hợp hoàn hảo cho 96, 120 và 144 dpi?

Trả lời

0

Điều tốt nhất tôi có thể nghĩ là đặt image source dynamically tại thời gian chạy dựa trên cài đặt DPI của hệ thống. Trong code-behind bạn có thể thiết lập tự động thích -

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

Nghe sự kiện này trong lớp học của bạn để nhận được thông báo về các thiết lập dpi thay đổi của máy tính - Microsoft.Win32.SystemEvents.DisplaySettingsChanged. Thông tin chi tiết của nó có thể được tìm thấy ở đây - System Events

Ngoài ra, bạn có thể nhận được giá trị hệ thống dpi sử dụng đoạn mã sau -

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

Move logic này đến một bất động sản và dựa trên giá trị tài sản, tự động thiết lập các nguồn hình ảnh.