Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.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
C# Windows aero glass窗体文本问题_C#_Winforms_Winapi_Aero Glass - Fatal编程技术网

C# Windows aero glass窗体文本问题

C# Windows aero glass窗体文本问题,c#,winforms,winapi,aero-glass,C#,Winforms,Winapi,Aero Glass,我将windows窗体与GlassForm一起使用(使用Microsoft.WindowsAPICodePack.Shell;)。我的问题是,当我将表单更改为GlassForm时,我的文本框文本不起作用。应用Aero Glass效果后,以黑色绘制的任何内容都将渲染为透明。它包括文本框控件中的文本。这个总的主题一直是这里讨论的主题。写得好的话,他们会得到很多选票,但答案很少 这里没有很多好的解决方案。我遇到的所有人都被称为“丑陋”和“刻薄”。当您使用标签控件之类的东西时,所有者绘制是一种合理的方法

我将windows窗体与GlassForm一起使用(使用Microsoft.WindowsAPICodePack.Shell;)。我的问题是,当我将表单更改为GlassForm时,我的文本框文本不起作用。应用Aero Glass效果后,以黑色绘制的任何内容都将渲染为透明。它包括文本框控件中的文本。这个总的主题一直是这里讨论的主题。写得好的话,他们会得到很多选票,但答案很少

这里没有很多好的解决方案。我遇到的所有人都被称为“丑陋”和“刻薄”。当您使用标签控件之类的东西时,所有者绘制是一种合理的方法,但我不建议您尝试绘制自己的文本框,因为这太难了;正如我所说的,结果既丑陋又粗俗。我不满意我自己使用它,但它可能适合你,这取决于你的标准有多高

当然,owner drawing的目标是使用GDI+(本机支持透明度)而不是GDI(默认情况下所有内置控件都使用GDI)来完成所有绘图,或者调用类似的函数,该函数专门用于渲染具有阴影的文本,阴影在玻璃上[某种程度上]可读

同样,启用兼容文本呈现(这会导致内置控件使用GDI+例程绘制,就像它们在早期版本的.NET中所做的那样)等常用技巧对文本框不起作用

老实说,最好的办法是将文本框放置在窗体中未渲染为玻璃的区域上。使用有选择地启用窗体某些区域后面的玻璃效果,而不是整个窗体。我在中提供了一个完整的、随时可用的.NET实现。

请查看此示例:

我没有进一步研究它,但在这个Aero glass区域上放置一个文本框、按钮或其他组件是有效的——渲染组件没有透明度问题。这些标签并不完美,但可以用GDI轻松绘制+ 与示例项目的直接链接如下:

看起来他在控件后面放了一个面板,并为面板设置了透明键


在表单上放置一个面板,设置要填充的驳接样式,将面板的底色设置为X色,然后将表单的透明键设置为相同的X色。

您需要为我们提供更多信息以帮助您,你可以发布一个截图或一些示例代码吗?我想OP的意思是:虽然我使用你的链接这个问题不清楚,但问题是一样的。我的文字可见透明!