Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi Firemonkey中的Cleartype字体/文本呈现_Delphi_Firemonkey_Delphi Xe8 - Fatal编程技术网

Delphi Firemonkey中的Cleartype字体/文本呈现

Delphi Firemonkey中的Cleartype字体/文本呈现,delphi,firemonkey,delphi-xe8,Delphi,Firemonkey,Delphi Xe8,下面是一个示例VCL应用程序,其中只包含一个TEdit控件 如果编译类似的Firemonkey(FMX)应用程序,您会注意到: (小L字母像疯了一样跳来跳去) 在我的研究中,我发现了G+post,其结果是: 正如你所看到的,结果更好 跳跃消失了。但是,TCircle渲染得不是很好 经过进一步研究,我发现使用 初始化GlobalUseDX:=False具有更好的输出: 偶尔也会有一些“字母跳跃”现象,但这是一个更好的结果。然而,在小L的后面似乎有一些背景色(淡黄色) 有谁知道使用最新的Fi

下面是一个示例VCL应用程序,其中只包含一个TEdit控件

如果编译类似的Firemonkey(FMX)应用程序,您会注意到:

(小L字母像疯了一样跳来跳去)

在我的研究中,我发现了G+post,其结果是:

正如你所看到的,结果更好

跳跃消失了。但是,TCircle渲染得不是很好

经过进一步研究,我发现使用
初始化GlobalUseDX:=False具有更好的输出:

偶尔也会有一些“字母跳跃”现象,但这是一个更好的结果。然而,在小L的后面似乎有一些背景色(淡黄色)


有谁知道使用最新的Firemonkey实现类似ClearType字体渲染的更好方法吗?

这实际上是一个非常复杂的问题。您是否曾经编写过文本渲染器,使用三种或四种不同的图形API,使用抗锯齿可变宽度字体计算间距?许多其他类似的渲染器(包括微软的一些渲染器)也有类似的问题。前几天我在OSX上看到了一个类似的bug(字母是“r”,而不是“l”)。在我看来,除非你的用户通常会连续输入100个l,否则这不太可能是一个非常重要的问题。@David H-FireMonkey是目标平台。@DavidHeffernan,因为这样你就可以用GDI进行渲染,抓取位图,转换格式,并将其加载回GPU内存。还有其他问题。或者,简而言之,同样的原因Direct2D/DirectWrite没有这样做,并且有自己的层(别忘了还有很多人抱怨它的文本呈现方式。)我可以看到这里禁止批评。我的评论不见了。不要介意。