C# 使用透明颜色在透明窗体上绘制时,背面颜色将显示

C# 使用透明颜色在透明窗体上绘制时,背面颜色将显示,c#,winforms,transparency,transparent,C#,Winforms,Transparency,Transparent,我正在创建一个透明窗体(通过使用透明键和设置背景来完成),然后尝试使用位图缓冲区在其上绘制。我的所有绘图都是使用buffers graphics实例完成的,然后使用OnPaint中的forms graphics引用直接绘制到表单 我的问题是,每次我用alpha值画东西时,背景色都会显示出来。有没有办法解决这个问题,使alpha按预期工作(不显示透明关键点的背面颜色)?您需要每像素alpha混合,而不是彩色关键点。Winforms不直接支持,您需要这样做。@HansPassant您能在此基础上进行

我正在创建一个透明窗体(通过使用透明键和设置背景来完成),然后尝试使用位图缓冲区在其上绘制。我的所有绘图都是使用buffers graphics实例完成的,然后使用OnPaint中的forms graphics引用直接绘制到表单


我的问题是,每次我用alpha值画东西时,背景色都会显示出来。有没有办法解决这个问题,使alpha按预期工作(不显示透明关键点的背面颜色)?

您需要每像素alpha混合,而不是彩色关键点。Winforms不直接支持,您需要这样做。@HansPassant您能在此基础上进行扩展吗?我对WinAPI知之甚少。@HansPassant好吧,你的建议行得通,但它直接将自己绘制到桌面上,这是我无法拥有的(即使窗口被隐藏,它也会绘制)。我认为它使用第二种形式来绘制,而不是桌面。@TaW不是根据我的经验。如果我将另一个窗口放在正在绘制的窗口前面,该窗口将显示在新聚焦的窗口上方。