2014-09-27 20 views
7

enter image description hereWindows Forms DPI rộng

Ứng dụng của tôi có vẻ tốt với 100% thiết lập DPI, nhưng khi người dùng lựa chọn khác nhau (125% hoặc 150%) từ không phù hợp trong các thùng chứa. Tôi cố gắng để sửa lỗi này với giải pháp tôi tìm thấy ở đây: Detect windows font size (100%, 125%, 150%) đó là:

this.AutoScaleMode = AutoScaleMode.Dpi; 

Nó cố định thiết lập 150% (làm cho nó một chút mờ, nhưng đó là ok), tiếc là nó đã không làm tương tự cho 125% đang được sử dụng trên PC mà ứng dụng được thiết kế để chạy.

Có một số sửa chữa dễ dàng này hay tôi phải sắp xếp lại mọi biểu mẫu theo cách thủ công?

+1

Xem http://stackoverflow.com/questions/4075802/creating-a-dpi-aware-application – stuartd

+1

Ở mức 150%, Windows đảm nhiệm việc mở rộng quy mô và sẽ cho phép cửa sổ của bạn tự vẽ thành một bitmap. Sau đó nó hiển thị bitmap đó trên màn hình, rescaling nó để làm cho nó lớn hơn. Vâng, có vẻ mờ, bạn phải tự khai báo [dpiAware] (http://stackoverflow.com/a/13228495/17034) để dừng lại. Bạn chắc chắn không phải DPI nhận thức tuy nhiên, bạn bằng cách nào đó dừng các điều khiển từ đúng rescaling mình. Giống như họ thường làm, một ảnh chụp màn hình không bao giờ là một cách tốt để hiển thị một vấn đề mã hóa. Có thể có một cái gì đó để làm với thuộc tính Font của biểu mẫu, không gán nó. –

+0

@HansPassant Tôi đã thay đổi kích thước phông chữ ở dạng thành 12, điều này có gây ra sự cố không? –

Trả lời

4

Creating a DPI-Aware Application

Tất cả các container phải sử dụng AutoScaleMode cùng - phần này cố định vấn đề của tôi

Nó là cần thiết rằng cửa sổ ứng dụng nên có cùng một bố trí ở độ phân giải khác nhau có nghĩa là không nên có hiệu lực từ ngày bố trí của ứng dụng về thay đổi độ phân giải. Dưới đây là các bước để thực hiện việc này.

  1. Sử dụng bảng bảng bố trí
  2. kiểm soát Kéo trong phòng giam của TableLayoutPanel và thiết lập neo và dock tài sản.
  3. Đặt thuộc tính rowspan và colspan của điều khiển được kéo để hợp nhất ô
  4. Đặt lề và đệm của điều khiển được kéo đối với ô.
  5. kéo tất cả các điều khiển và làm theo các bước tương tự, thiết kế hoàn chỉnh sử dụng TableLayoutPanel
  6. Bây giờ đặt tất cả các cột và các hàng kích thước của TableLayoutPanel = AutoSize (hoặc theo%)
  7. tính Set TableLayoutPanel AutoSize = true, autosizemode = phát triển và thu nhỏ
  8. Đặt biểu mẫu thuộc tính autosize = true, autosizemode = grow and shrink
  9. Chạy ứng dụng windows Nếu ứng dụng windows của bạn mở ở trạng thái tối đa thì đặt tablelayoutpanel dock property = fill.
+1

Nếu bạn sử dụng bảng bố cục bảng và đặt lề và đệm, bạn [có thể ở trong thời gian xấu] (https://support.microsoft.com/en-us/help/3044516/nested-tablelayoutpanel-is-displayed- với màn hình lớn-trống-không gian-trong-a-windows-forms-ứng dụng-trên-cao-dpi-màn hình) - tốt hơn hãy chắc chắn rằng bạn không làm tổ những bảng bố trí bảng. –

-2

Mã snipshet này hoạt động hoàn hảo cho tôi.

http://urenjoy.blogspot.it/2008/11/make-resolution-independent-windows-app.html

(Sử dụng Visual Studio Express 2013) Nó là cần thiết rằng cửa sổ ứng dụng nên có cùng một bố trí ở độ phân giải khác nhau có nghĩa là không nên có hiệu lực từ ngày bố trí của ứng dụng vào việc thay đổi độ phân giải. Dưới đây là các bước để thực hiện việc này.

  • Sử dụng bảng bảng bố trí
  • kiểm soát Kéo trong phòng giam của TableLayoutPanel và thiết lập neo và dock tài sản.
  • Đặt thuộc tính rowspan và colspan của điều khiển được kéo để hợp nhất ô
  • Đặt lề và đệm của điều khiển được kéo đối với ô.
  • kéo tất cả các điều khiển và làm theo các bước tương tự, thiết kế hoàn chỉnh sử dụng TableLayoutPanel
  • Bây giờ đặt tất cả các cột và các hàng kích thước của TableLayoutPanel = AutoSize (hoặc theo%)
  • tính Set TableLayoutPanel AutoSize = true, autosizemode = phát triển và thu nhỏ
  • Đặt biểu mẫu thuộc tính autosize = true, autosizemode = grow and shrink
  • Chạy ứng dụng windows Nếu ứng dụng windows của bạn mở ở trạng thái tối đa thì đặt tablelayoutpanel dock property = fill.
+0

Đây không phải là câu trả lời giống như câu trả lời được chấp nhận? –

Các vấn đề liên quan