2011-11-20 35 views
5

Trong VS2008 tôi thiết kế một biểu mẫu cho một C# dll. Các dll là một plugin cho một ứng dụng hơi cũ (ca. 2005): chúng ta hãy gọi nó là "OldApp". Trong trình thiết kế biểu mẫu VS, văn bản trong các điều khiển Nhãn trên biểu mẫu của tôi được hiển thị độc đáo: chống răng cưa và được giữ nguyên. Nhưng khi tôi đưa lên biểu mẫu này trong OldApp (nơi mà dll C# chạy dưới dạng plugin), văn bản trong các điều khiển Nhãn trông xấu xí. Đó là dễ đọc, nhưng kerning là người nghèo: các chữ cái được cách nhau xa nhau và tại offsets dường như ngẫu nhiên. Bất cứ điều gì tôi có thể làm để làm cho các nhãn văn bản từ trong OldApp trông tốt như họ làm trong thiết kế biểu mẫu của VS? Tôi nghi ngờ các vấn đề phông chữ cụ thể, nhưng đó là Arial, 7.2 pt (mặc định VS2008). Tôi đã thử chơi với hai dòng có liên quan trong Program.cs (xem bên dưới), để không có hiệu lực.làm cho văn bản kiểm soát nhãn trông tốt như trong VS mẫu thiết kế

Application.EnableVisualStyles(); // tried using it and commenting it out 
Application.SetCompatibleTextRenderingDefault(true); // tried true and false 
+0

Bạn đang thực thi ứng dụng cũ trên cùng một máy với Visual Studio? Lý do tôi hỏi là định dạng của ứng dụng có thể phụ thuộc vào hệ điều hành. Một cái gì đó chạy trên Windows 7 có thể trông khác nhau trên một máy tính Windows XP. – evasilchenko

+0

Có, cùng một máy: Win7 64 – MrSparkly

+0

Bạn đã cố tăng kích thước phông chữ chưa? Hãy thử thiết lập nó để 12pt và xem nếu bạn vẫn gặp vấn đề này. – evasilchenko

Trả lời

0

Tôi đã tìm thấy sự cố tương tự trên diễn đàn MSDN đề cập đến việc thêm dòng sau sau phương thức EnableVisualStyles().

Application.DoEvents() 

Dường như là lỗi trong phiên bản .NET cũ hơn ... bạn đang sử dụng phiên bản nào?

+0

Đã thử, nhưng không có gì khác biệt. – MrSparkly

0

Sau một cuộc điều tra tôi có một số kết quả, vì vậy tôi sẽ chỉ cần trả lời câu hỏi của riêng tôi:

  1. Tin xấu: các kiểu cũ văn bản dựng hình được sử dụng bởi OldApp những gì đang gây ra vấn đề. Tôi đã xác minh bằng cách chuyển đổi thuộc tính UseCompatibleTextRendering cho điều khiển nhãn trong VS. Biến dạng phông chữ tôi thấy là cùng một số tôi thấy trong OldApp. Điều này có nghĩa là đường dây Application.SetCompatibleTextRenderingDefault (sai) trong mã của tôi có không có hiệu lực. OldApp sẽ bỏ qua nó và vẫn hiển thị kiểu cũ.

  2. Theo đề xuất của DeviantSeev, phông chữ lớn hơn sẽ giúp ích một chút. Nó không loại bỏ được những kerning xấu, nó chỉ làm cho nó ít đáng chú ý hơn. Tôi tăng phông chữ từ 7.2pt lên 8pt (không phải 12pt), bởi vì hộp thoại trở nên quá lớn nếu không. Cách để thực hiện điều này là trong thuộc tính Phông chữ của biểu mẫu Phông chữ (không phải của điều khiển). Bằng cách này, bạn sẽ thay đổi tất cả các điều khiển thống nhất (nếu thuộc tính Phông chữ của chúng được đặt thành mặc định).

  3. Kích thước phông chữ trong VS có vẻ rời rạc hơn là liên tục hoặc có thể là int() làm tròn tham gia. Tăng phông chữ từ 7.2pt lên 7.4pt kết quả trong sự thay đổi rất ít, trong khi ở 7,5pt phông chữ làm cho một bước nhảy đột ngột về kích thước.

  4. Biểu mẫu có thuộc tính AutoScaleMode. Nếu được đặt thành Phông chữ và biểu mẫu là có thể thay đổi lại, biểu mẫu sẽ thay đổi kích thước theo VS tương ứng với thay đổi kích thước phông chữ. Bằng cách này, trong VS bạn có thể tìm thấy một mặt đất trung bình chấp nhận được giữa một kích thước phông chữ (dễ đọc) và một hộp thoại cồng kềnh. Tuy nhiên, hãy cẩn thận: thao tác tự động mở rộng có thể bất ngờ, ví dụ nếu bạn thay đổi Phông chữ đơn vị từ điểm sang pixel, inch, v.v ... Bạn có thể đột nhiên kết thúc bằng điều khiển vi mô hoặc biểu mẫu lớn hơn màn hình và nhấn hoàn tác sẽ không sửa chữa nó. Bạn thực sự không muốn thiết kế lại biểu mẫu của mình một lần nữa, vì vậy hãy lưu lại trước khi thay đổi bất kỳ đơn vị phông chữ nào và sau đó lại khi bạn hài lòng với những gì bạn thấy.

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