C# XP模式下的DrawImage或远程桌面

C# XP模式下的DrawImage或远程桌面,c#,gdi+,png,drawimage,C#,Gdi+,Png,Drawimage,我正在显示一个带有透明背景的PNG,在Windows 7中看起来不错,但是我在XP模式下运行我的应用程序,或者在Windows XP机器上运行远程桌面,PNG看起来不正确。我注意到,如果我禁用“集成模式”或在没有远程桌面的XP上运行应用程序,图像看起来很好 如何让DrawImage在XP模式或远程桌面下正确渲染PNG Windows7中的图像 XP模式或远程桌面内的图像 这是我的密码: protected override void OnPaint(PaintEventArgs e) {

我正在显示一个带有透明背景的PNG,在Windows 7中看起来不错,但是我在XP模式下运行我的应用程序,或者在Windows XP机器上运行远程桌面,PNG看起来不正确。我注意到,如果我禁用“集成模式”或在没有远程桌面的XP上运行应用程序,图像看起来很好

如何让DrawImage在XP模式或远程桌面下正确渲染PNG

Windows7中的图像

XP模式或远程桌面内的图像

这是我的密码:

protected override void OnPaint(PaintEventArgs e)
{
    Image image = Image.FromFile("hello.png", false);
    Bitmap bmp = new Bitmap(image);

    Rectangle destRect = new Rectangle(0, 0, image.Width, image.Height);

    e.Graphics.DrawImage(image, destRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel);
    base.OnPaint(e);
}

远程桌面默认使用16位颜色运行,我认为这与alpha混合不兼容。如果可能的话,您需要将显示器重新配置为32位模式。

如果我使用PictureBox控件加载并显示相同的图像,即使我的DrawImage没有,它在XP模式下看起来也很好。因此,似乎必须有一种方法让DrawImage正确渲染,尽管它是16位的。@simplecoder,使用PictureBox控件将透明度转换为控件的背景,并消除需要发生的alpha混合。