2010-01-22 41 views
5

Tôi gặp sự cố với hiển thị ứng dụng .NET Windows của chúng tôi trong cài đặt dpi cao.vấn đề DPI cao

Tất cả biểu mẫu được đặt thành AutoScaleMode = DPI, nhưng điều này không giải quyết được tất cả sự cố.

Nhãn cơ bản kết thúc mở rộng để đối phó với phông chữ lớn hơn, nhưng vị trí của các điều khiển khác không thay đổi và chúng tôi kết thúc với lables che khuất các điều khiển khác.

Màn hình sẽ trông như thế này: http://www.manageinvest.com/good.jpg ..và trên DPI cao nó sẽ trông như thế này: bad.jpg (đây là bài viết đầu tiên của tôi vì vậy tôi đang chỉ cho phép một liên kết)

Bất kỳ lời đề nghị?

Cảm ơn trước,

Kristian

Trả lời

1

Điều này có thể không giải quyết được vấn đề của bạn. Tuy nhiên, chúng tôi đã học được một cách khó khăn rằng Nhãn và các điều khiển văn bản sẽ được xếp chồng lên nhau theo chiều dọc, tức là đặt Hộp văn bản bên dưới Nhãn, thay vì bên cạnh nhãn. Điều này giải quyết được rất nhiều vấn đề đối với chúng tôi bao gồm hỗ trợ nhiều ngôn ngữ dưới dạng văn bản bằng các ngôn ngữ khác nhau có thể nhiều hơn văn bản tiếng Anh

5

Về lý thuyết, tỷ lệ phông chữ và DPI trong Winforms là tự động. Trong thực tế ... không quá nhiều.

Tôi nhận thấy rằng nó đối phó tốt hơn với tỷ lệ dọc hơn là ngang, nhưng thậm chí sau đó nó hoàn hảo.

Theo kinh nghiệm của tôi, mở rộng quy mô chỉ đáng tin cậy khi bạn làm một trong hai điều:

  1. Không sử dụng các nhà thiết kế ở tất cả. Điều này là khá đau đớn, nhưng nó cung cấp cho bạn số lượng cần thiết của kiểm soát bố trí của bạn.

  2. Sử dụng các điều khiển bố cục tích hợp - cụ thể là FlowLayoutPanelTableLayoutPanel. Những người này là bạn thân nhất của bạn; Tôi hiếm khi làm bất cứ điều gì trong Winforms mà không có chúng nữa.

Trong trường hợp của bạn, tôi có thể đi với # 2. Dựa trên ảnh chụp màn hình, tôi nghĩ sẽ khá dễ dàng để phù hợp với bố cục của bạn thành sự kết hợp của các hộp chứa TableLayoutPanelFlowLayoutPanel - thậm chí có thể chỉ một TableLayoutPanel.

2

Bạn nên xem xét các tính năng AutoScaleMode và AutoSize. Kết hợp với khả năng kết nối bạn sẽ có thể đạt được những gì bạn muốn.

Tôi đã có một bài viết thực sự tốt trên đó nhưng liên kết là chết ... dù sao, điều này sẽ giúp bạn bắt đầu:

http://msdn.microsoft.com/en-us/library/ms229605.aspx

http://www.sellsbrothers.com/writing/winformsAutoScaling.htm

http://msdn.microsoft.com/en-us/library/system.windows.forms.autoscalemode.aspx

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