C# WinForms应用程序中的部分透明面板在Windows XP上显示为黑色

C# WinForms应用程序中的部分透明面板在Windows XP上显示为黑色,c#,.net,visual-studio-2010,visual-studio,c#-4.0,C#,.net,Visual Studio 2010,Visual Studio,C# 4.0,前言: 请原谅部分图片-这与我公司正在进行的工作有关 我已经在几个完全更新的WindowsXPSP3笔记本电脑上使用.NET4.0和.NET3.5测试了这一点。最终结果是一样的 我有一个WinForms应用程序。在应用程序的第一个屏幕上,我有几个部分透明的黑色面板。我通过在属性编辑器中手动输入来设置此颜色 生成的设计器代码(如果有帮助) this.pnlMain.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(125)))),

前言: 请原谅部分图片-这与我公司正在进行的工作有关

我已经在几个完全更新的WindowsXPSP3笔记本电脑上使用.NET4.0和.NET3.5测试了这一点。最终结果是一样的

我有一个WinForms应用程序。在应用程序的第一个屏幕上,我有几个部分透明的黑色面板。我通过在属性编辑器中手动输入来设置此颜色

生成的设计器代码(如果有帮助)

this.pnlMain.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(125)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
最终的视觉效果是(我的主面板的一角,主窗体有一个图像背景):

当我在有问题的Windows XP机器上打开我的应用程序时,结果就是这样(面板为纯黑色,很抱歉是照相手机):

应用程序在Windows Vista->Windows 8上的外观与预期一致

奇怪的是,在Windows XP上,如果我单击并拖动应用程序到几乎完全脱离屏幕的位置,然后将其拖回可视范围,则部分透明度会正确渲染


我相信有一些奇怪的油漆/失效问题正在发生。有人有什么想法吗?我已经研究了StackOverflow上的许多“透明变黑”问题,大多数都提到了自定义控件,但是我觉得这并不是解决我问题的方法。提前谢谢

winforms(严重)不支持transpacency。您的选择是:1-按原样使用winforms,不要试图从中获得任何“酷”的东西。2-使用WPF。它是否仅在您将窗口移出屏幕或仅移动窗口时才起作用?可以尝试调用yourpanel.Invalidate()或Form.show中的yourpanel.Refresh()。对于bg图像的容器也可以尝试同样的方法。没有任何可能的原因说明这不能正常工作,面板支持部分透明。不管是什么错误都不可能从截图中猜出来。@HansPassant我知道!我能想到的唯一一件事是,发生这种情况的硬件非常陈旧。下周我将在一些更新得多的硬件上测试XP。@FedericoBerasategui,Winforms支持透明性,因为windows 98(证明:看看winamp)设置一个标志可能是不可能的,但这是可能的