1
1
我也有类似的问题。我想知道我要画的文字会有多大,它会出现在哪里,确切地说。我没有断线的问题,所以我想我在这方面帮不了你。我遇到了与您相同的问题,所有可用的各种测量技术,包括最终使用MeasureCharacterRanges,它对左侧和右侧都有效,但对高度和顶部完全无效。(不过,在一些罕见的应用程序中,使用基线可以很好地工作。) 我最终得到了一个非常不雅观、低效但有效的解决方案,至少在我的用例中是这样。我在一个位图上画出文本,检查这些位,看看它们最终在哪里,这就是我的范围。因为我主要是画小字体和短字符串,这对我来说已经足够快了(特别是我添加的备忘录)。也许这并不是你所需要的,但也许它能引导你走上正确的道路。 请注意,目前需要编译项目以允许使用不安全的代码,因为我正试图从中挤出每一点效率,但是如果您愿意,可以删除该约束。而且,它并不像现在这样线程安全,如果需要的话,您可以很容易地添加它。
|
2
1
MeasureString和MeasureCharacterRanges中肯定有一个bug。 答案很简单: 确保将宽度限制(度量值中的int width或尺寸、宽度MeasureCharacterRanges中boundingRect的属性。当你得到你的结果时,将每个维度乘以0.72,得到真实的结果
或
解释(我可以理解)是,与上下文有关的内容触发了inch->point(*72/100)的度量方法转换(在DrawString方法中不触发)。当您传入实际宽度限制时,它正在调整此值,因此测量的宽度限制实际上比应该的短。然后,文本比预期的更早换行,因此得到的高度结果比预期的要长。不幸的是,转换也适用于实际高度结果,因此最好也“取消输入”该值。 |
3
0
你能试着把下面这行去掉吗?
这是我能想到的最好的办法:( |
4
0
我也有一些问题
例如,如果
所以我真的认为使用非整数X坐标的布局矩形时有一个bug。 |
5
0
要按屏幕分辨率将点转换为dpi,需要除以72再乘以dpi,例如:
|
pp-man · 无法添加系统。绘画dll引用 6 年前 |
techno · 调整图像大小保持纵横比白线边框 8 年前 |
michaeln · 图像大小调整-文件大小不会像Python那样缩小 10 年前 |
user3077703 · 从picturebox保存图像-VB 10 年前 |