C# 在C中显示字体大小预览

C# 在C中显示字体大小预览,c#,winforms,fonts,fullscreen,preview,C#,Winforms,Fonts,Fullscreen,Preview,我正在尝试创建一个应用程序,其中您可以在文本框中写入文本,选择字体、颜色等。 所有这些内容都将显示在它旁边的预览框中,当用户单击Go Live时,预览框中的相同内容将全屏显示。 问题来了 如果用户键入Hello World并选择字体大小为8,预览框可能会显示文本占据整个屏幕。但是当我点击Go Live时,全屏上的字体大小仍然是8,文本看起来很小 我想我必须找到预览框大小与屏幕分辨率的比率,并将字体大小从预览映射到全屏。以下算法似乎有效: multiply_factor = (int)monito

我正在尝试创建一个应用程序,其中您可以在文本框中写入文本,选择字体、颜色等。 所有这些内容都将显示在它旁边的预览框中,当用户单击Go Live时,预览框中的相同内容将全屏显示。 问题来了

如果用户键入Hello World并选择字体大小为8,预览框可能会显示文本占据整个屏幕。但是当我点击Go Live时,全屏上的字体大小仍然是8,文本看起来很小

我想我必须找到预览框大小与屏幕分辨率的比率,并将字体大小从预览映射到全屏。以下算法似乎有效:

multiply_factor = (int)monitor_width/preview_box_width;
add_factor = (int)(1st digit of the decimal part of the above division);
live_Screen_font_size = (preview_font_size * multiply_factor) + add_factor;
例如:

If screen resolution width is 1366px and preview box width is 310px;
=> 1366/310 = 4.406
multiply_factor = 4;
add_factor = 4;

preview_font_size = 8;
live_Screen_font_size = (8*4)+4 = 36;
这似乎很有效,但没有我想要的那么好。而且它显然是不正确的,因为我还没有考虑到屏幕的高度

有没有正确的方法? 或者在C语言中有其他方法来实现这一点吗

请为这个问题提供合适的标签,以便正确的人能够找到它


提前感谢。

如果您想要预览,而不是编辑,您可以将文本框和键入的文本保存到图像中,并且图像可以轻松拉伸到全屏,无需计算系数。在WPF中,ViewBox控件可以完全按照您的要求进行操作,并且只需很少的努力,但不幸的是,它没有WinForm等价物。@kennyzx这是一个合理的解决方案,但如果屏幕大小与预览框相比非常大,那么当我们将图像拉伸到全屏时,图像不会像素化吗?这也需要更多的处理能力,而不仅仅是为更大的屏幕计算相对字体大小。@kennyzx-Ahh!不管他们提到如何缩放字体?恐怕ViewBox和拉伸位图有同样的锯齿问题,它只是在宽度和高度上均匀地拉伸文本框。如果你想在文本上有一个平滑的边缘,你必须像以前那样使用更大的字体。