2016-10-27 19 views
9

Wnet projesini .net framework 4.6.2 ile oluşturmaya çalıştığımda, bir hata aldım, çünkü FormattedText() Disoleted aşağıdaki gibi: [Eski ("PixelsPerDip geçersiz kılma geçersiz kılma", false)] public FormattedText (string textToFormat, CultureInfo kültürü, FlowDirection flowDirection, Typeface yazı tipi, çift emSize, Fırça ön planı);.NET Framework 4.6.2'de FormattedText() devre dışı, nasıl düzeltilebilir

yeni kılma yöntemi (dize textToFormat, Cultureınfo kültürü, FlowDirection flowDirection, Yazı tipi yazı tipi, çift emSize, Fırça ön, çift pixelsPerDip) halka FormattedText olduğu;

S: pixelsPerDip'i nasıl belirleyebilirim?

S: pikselleriPerDip olmadan eski yapıcıyı nasıl kullanabilirim?

cevap

11

Sen monitörünüzün DPI hesaplamak gerekir, bkz: (4.6.2 DPI bilincini işlemek için yeni API'ler gelip .NET ile Yanı Sıra How can I get the DPI in WPF?

, bu nedenle yukarıdaki yöntemler kaldırılmış olabilir mesela VisualTreeHelper .GetDpi()). https://blogs.msdn.microsoft.com/dotnet/2016/08/02/announcing-net-framework-4-6-2/ İşte bazı örnek kod ve bir kullanma klavuzu görme: programın düzgün ölçeklendiği hala farklı DPI'lerde ile monitör arasında sürüklenip böylece https://github.com/Microsoft/WPF-Samples/tree/master/PerMonitorDPI

IMHO bu pararameter eklendi.

FromattedText bildirimi: pixelsPerDip: Ölçek Faktörü için Bağımsız Piksel değeri, ölçek faktörünün karşılığıdır. Örneğin, bir ekranın DPI değeri 120 ise (veya 1.25, çünkü 120/96 = 1.25), yoğunluk bağımsız piksel başına 1,25 piksel çizilir. DIP, WPF'nin cihaz çözünürlüğünden ve DPI'lardan bağımsız olması için kullanılan ölçü birimidir. Eğer sadece 1 monitör var ve bu nedenle taşıma herhangi DPI değiştirilen olayı gerekmiyorsa

, senin penceresinin OnLoaded() olay örneğin aşağıdaki kullanmak (veya yapıcı olarak):

var pixelsPerDip = VisualTreeHelper.GetDpi (bu) .PixelsPerDip;

+0

Teşekkürler Leguanjoe –

+0

Teşekkürler Leguanjoe, ancak projem monitörleri değiştiremiyor, Yani ayarlayabileceğim bir varsayılan değer var mı? (Örneğin," -1") ya da başka bir şey ben, ben '1.0' ile gider etmek istemiyorsanız ben, VisualTreeHelper yöntemini kullanırsınız peşin –

+0

teşekkür ederim, DPI olsun olmadan bu yapıcı kullanabilmesi fonksiyon 96 DPI ile bir monitör bekliyor. Sadece 1 ekran kullandığınızda, bu değerin devreye girip girmediğinden emin değilim. "5" denedim ve FormattedText'in boyutunda hiçbir değişiklik görmedim. – Leguanjoe

İlgili konular