dem*_*rge 5 c++ windows gdi direct2d
我的新应用程序将具有丰富的界面,应该可以动态调整使用透明图标/图像等.对于这个应用程序,我正在尝试决定使用新的Direct2D API对抗旧的GDI.其中一个缺点当然是它不能在XP上运行,尽管我发现有一些更糟糕的问题需要决定:
我注意到在Direct2D环境中输出文本似乎有点模糊(虽然作为一个功能销售).只需查看启用了硬件加速(或IE9)的Firefox 4中的文本.这似乎是因为在Direct2D文本中不像GDI那样遵循(像素)网格.有没有办法强制Direct2D使其坚持像素网格,从而解决这个问题?
速度真的有这么大的提升吗?我试图理解这篇文章,我从中得到的是,在Windows 7和XP(而不是Vista?)中,GDI已经硬件加速了.例如,在我的应用程序中,我使用了很多内存DC,它们刚刚被BitBlt编入到位,并且正在绘制使用的绘制透明图像/抗锯齿线等AlphaBlend.最后一个肯定是硬件加速,因为我在测试我的例程时测量速度.
那你要把钱放在哪里?Direct2D是值得的麻烦还是你只是坚持好老的GDI?或者你会推荐别的吗?
注意:我用C++编程btw,没有使用MFC.
解决问题的方法非常简单。Direct2D是高度可配置的,并且包括文本渲染和提示。如果要使其呈现文本以匹配GDI的呈现(即非常紧密的像素对齐),则只需:
由于另一个答案毫无用处,并且会破坏Direct2D中的渲染,因此让我提供Direct2D文本渲染的另一个概述。非常非常好。与Mac上的字体不同,它们基本上不提示字体,而文本实际上模糊不清,而Direct2D默认情况下仅在Y方向强烈提示。这是有道理的,因为您的显示器可能在垂直方向上具有约96 dpi的分辨率,但是使用亚像素抗锯齿功能时,水平分辨率超出了合理的人类感知范围。与GDI相比,它在ClearType用法和提示方面也要微妙得多。与Direct2D相比,GDI文本的边缘往往非常鲜艳。如今,我发现GDI文本看起来非常苛刻,并且更喜欢Firefox和IE中的Direct2D文本进行长时间阅读。
因此,由于多种原因,默认模式可能对您显示为“模糊”。