玻璃上的平滑文字

发布于 2024-08-31 08:43:54 字数 108 浏览 2 评论 0原文

我见过许多其他在玻璃上绘制平滑文本的示例。但我不能使用它们。我需要在运行时添加的每个标签都是平滑的。我不能只是将文本“绘制”到屏幕上。

这有可能吗?是否有相关来源?

谢谢

I have seen many other samples out there that draw smooth text on glass. But I can't use them. I need every single label that gets added at runtime to be smooth. I can't just "draw" text onto the screen.

Is this at all possible, and are there and sources around?

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

听风吹 2024-09-07 08:43:54

仔细阅读这篇文章 http://msdn.microsoft.com/ en-us/magazine/cc163435.aspx#S6

它有点长,但它回答了您的很多问题,并且还提供了更多有关玻璃的信息。

但与你直接相关的部分是

一个特别的问题是
将 GDI 项目渲染为黑色使用
位模式 0x00000000 - 这也是
恰好是完全透明的
如果您使用的是 alpha,则为黑色
渠道。这意味着如果你画
使用黑色 GDI 画笔或钢笔,您将
获得透明颜色,而不是黑色
一。这带来的最大问题
当你尝试使用默认值时
文本控件中的文本颜色
位于玻璃区域上的标签。
由于默认文本颜色是
通常是黑色,DWM 会考虑
这是透明的并且文本
将被写在玻璃上
错误地。一个例子可以在
图 10. 第一行已写入
对于 GDI+,第二个是文本标签
使用默认颜色进行控制。作为
你可以看到,它几乎难以辨认
因为它实际上是错误的
显示为灰色的渲染文本,
不是黑的。

幸运的是,有很多方法
围绕这个问题。使用所有者绘制
控制就是其中之一。渲染为位图
有一个阿尔法通道是另一个。
幸运的是,最简单的方法是获得
控件上的文本是为了让.NET
Framework 2.0 为您使用 GDI+。这
通过设置可以轻松完成
UseCompatibleTextRendering 属性
你的控制。默认情况下,这
属性设置为 false 以便
为以前的版本编写的控件
.NET Framework 的将呈现
相同的。但如果你将其设置为 true,你的
文本看起来是正确的。
您可以使用以下命令全局设置该属性

Application.SetUseCompatibleTextRenderingDefault
方法。

他还提供了可以放在 Main() 中的示例代码,

static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(true);
    Application.Run(new GlassForm());
}

发生的很多事情

但我建议您阅读这篇文章,它会澄清 Aero/Glass Cheers ,
菲克斯

Take a long at this article http://msdn.microsoft.com/en-us/magazine/cc163435.aspx#S6

It's a bit long but it answers alot of your question and alore more in regards to glass.

but the relevant part for you directly is

One particular gotcha is that
rendering a GDI item in black uses the
bit pattern 0x00000000-which also
happens to be a completely transparent
black if you are using an alpha
channel. This means that if you draw
with a black GDI brush or pen you'll
get a transparent color, not a black
one. The biggest problem this presents
is when you try to use the default
text color in a control of a text
label that sits on the glass area.
Since the default text color is
usually black, the DWM will consider
this to be transparent and the text
will be written in the glass
incorrectly. An example can be seen in
Figure 10. The first line is written
with GDI+, the second is a text label
control using the default color. As
you can see, it's nearly illegible
because it's actually incorrectly
rendered text that shows up as gray,
not black.

Happily, there are a number of ways
around this problem. Using owner-draw
controls is one. Rendering to a bitmap
that has an alpha channel is another.
Fortunately, the easiest way to get
text on controls is to let the .NET
Framework 2.0 use GDI+ for you. This
is easily accomplished by setting the
UseCompatibleTextRendering property on
your controls. By default, this
property is set to false so that
controls written for previous versions
of the .NET Framework will render the
same. But if you set it to true, your
text will come out looking correct.
You can set the property globally with
the
Application.SetUseCompatibleTextRenderingDefault
method.

He also provides example code you can place in your Main()

static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(true);
    Application.Run(new GlassForm());
}

But I recommend reading the article, It'll clear up alot of what's going on with Aero/Glass

Cheers,
Phyx

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文