DrawString不能通过变换正确缩放

时间:2014-04-10 03:14:41

标签: c# gdi+

我实际上是在重写一个带有标记的文档查看器,以便远离COTS产品,到目前为止,一切都运行得非常好。我的代码基于Mark Miller的DrawTools扩展(http://www.codeproject.com/Articles/17893/Extensions-to-DrawTools)。

旧的查看器基于x / y坐标以英寸为单位存储页面及其标记,我将此转换为基于像素的坐标系并将线,框等转换为新查看器时没有任何问题。线条和方框显示出它们应该的位置,并且具有正确的大小。

问题一直是显示文本标记,无论我做什么,它们总是比它们应该小得多。

我正在做:

  1. UserControl-> OnPaint()方法
  2. 为:
  3. 创建矩阵变换
  4. 缩放
  5. 旋转
  6. 翻译
  7. 将矩阵应用于图形对象
  8. 调用页面图像然后绘制所有标记的方法。

  9. 我有要绘制的文本的X / Y Coords和字体大小,结果字符串DOES最终会在正确的坐标处,但文本太小了。关于这个的真正奇怪的部分是原始的查看器是用.Net编写的,所以我知道字体和大小应该特别相关,因为其他一切都很好。

    以下是我所谈论的一个例子。请忽略"这是一些Text"的BackColor和Border,我还没有得到改变,因为我已经非常专注于使TEXT正确。

    原件: Good Example

    我的结果: Bad Result

1 个答案:

答案 0 :(得分:0)

我最终不得不将所有内容改造为英制单位。字体根本没有简单的方法在单元之间进行缩放,而英制单元被证明是最简单的解决方案。