2012-03-23 120 views
1

我需要在Drawing.Font.Size(float,?)和WPF FontSize(double,WPF像素)之间进行转换。转换英寸的字体大小

最后,我决定在数据库中的fontSize的以英寸来存储...

我怎么能转换GDI字号,以英寸和WPF字号为英寸?

sizeInInch = wpfFontSize/96 
sizeInInch = gdiFontSize/? 

我可以使用DPI独立的东西吗?也许System.Windows.FontSizeConverter

我需要转换为一些东西,这将允许我切换WPF和GDI之间的多个时间而不改变“真实值”。

每个部门和下面的乘法会累积错误...

FontSizeConverter做了的ConvertTo,但我不明白,使用它: 说

myUniversalFontSize = (double)(myFontSizeConverter.ConvertFrom(
    gdiFont.SizeInPoints.ToString() + "pt")) 

将改变我的gdiFont大小显示。 ..? WPF像素?

现在应该如何将该值转换回GDI?

gdiFont.SizeInPoints = myUniversalFontSize/96 * 72??? 

我可以在第二个例子中使用myFontSizeConverter吗?

回答

1
+0

我需要两者。 96是用于WPF,但用于GDI? – moldovanu 2012-03-23 14:43:56

+0

我不明白LenghtConverter ...我需要转换为某些东西,这将允许我在WPF和GDI之间切换多次,而不改变“真实值”。每个部分和后面的乘法将累积错误... – moldovanu 2012-03-23 15:19:52

+0

您可能能够以1为1来存储数据库。您将使用LengthConverter为字体指定大小,并且它们将被正确渲染。但现在我猜测。正如我理解你的问题,我现在还没有真正的答案。抱歉 – Paparazzi 2012-03-23 18:35:32

0

不太了解WPF的东西,但是如果有一种方法将像素转换为点,则可以使用1英寸= 72点的比例。

+0

也参见http://stackoverflow.com/questions/9700753/convert-system-drawing-font-size-to-wpf-fontsize – Klaus78 2012-03-23 14:32:01

+0

同意我在= 72点以为1,但MS文档中它是96 – Paparazzi 2012-03-23 14:42:50

+0

我没有看到。我看到他们显示一个点相对于每英寸像素除以72.一个点是1/72英寸。如果每英寸有96像素,则1点= 1.333333像素。 – mlibby 2012-03-23 14:48:14

相关问题