【发布时间】:2022-01-10 19:58:00
【问题描述】:
所以我一直在为有趣的人制作一个股票跟踪器,我只需要克服 1 个障碍。那就是:我想让应用程序中的所有内容基本上都是透明的,除了文本和边框。
我尝试过在谷歌搜索时遇到的各种事情,例如
this.BackColor = Color.Magenta;
this.TransparencyKey = BackColor;
这行得通,只是它也弄乱了我的标签文本的字体/边框(?),导致:
我很想知道是否有办法去除标签文本周围的阴影,那样的话就完美了。
我也尝试过其他的东西,比如搞砸这个:
protected override void OnPaintBackground(PaintEventArgs e)
{
//variations of code here
}
然后我继续尝试弄乱以下代码的变体,但似乎什么也没做:
this.SetStyle(ControlStyles.USerPaint, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.DoubleBuffer, true);
// more variations of code
也许我对这一切的了解还不够多(我根本不了解 OnPaintBackground 方法),但无论如何我都感到有点失落。有人知道如何解决这个问题吗?
【问题讨论】:
-
我建议你放弃 WinForms 并至少使用 WPF,因为 WinForms 不支持堆叠控件、真正的透明度等。您使用 WinForms 有什么原因吗?
-
“我很想知道是否有办法去除标签文本周围的阴影,在这种情况下,这将是完美的。” - 我不认为那些是“阴影”,我认为那些是亚像素抗锯齿(“ClearType”)的伪影。我想你可以禁用它,这样你就可以干净地隔离文本,但你还需要禁用 all 抗锯齿,而不仅仅是亚像素抗锯齿 - 最终结果将清晰易读,但它不会要漂亮(想想:非常 1995 年的样子)。
-
我在一家在他们的软件中使用 WinForms 的公司工作,我想我会弄乱它来熟悉一下。
-
很公平——毕竟,自我提升是一个正当的理由。但我确实建议您完成此操作后,在 WPF 中再次尝试 - 如果只是为了感受 WPF 的不同之处。
-
@Dai 你的回答确实导致了一些有用的东西。非常感谢!如果您想将其发布为答案,请继续,否则我想我会自己发布它来回答这个问题:)
标签: c# .net winforms stock stockquotes