DrawImage в режиме XP или на удаленном рабочем столе - PullRequest
1 голос
/ 21 апреля 2010

Я отображаю PNG с прозрачным фоном, который хорошо выглядит в Windows 7, но затем я запускаю свое приложение в режиме XP или на удаленном рабочем столе на компьютере с Windows XP, и PNG выглядит неправильно. Я заметил, что если я отключаю «Режим интеграции» или запускаю приложение на XP без удаленного рабочего стола, изображение выглядит нормально.

Как получить DrawImage для корректного рендеринга PNG в режиме XP или на удаленном рабочем столе?

Изображение внутри Windows 7

альтернативный текст http://www.freeimagehosting.net/uploads/957bb6ea8b.png

Изображение внутри XP Mode или удаленного рабочего стола

альтернативный текст http://www.freeimagehosting.net/uploads/08f1fbec46.png

Вот мой код:

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);
}

1 Ответ

2 голосов
/ 21 апреля 2010

Удаленный рабочий стол по умолчанию работает с 16-битным цветом, что, по моему мнению, несовместимо с альфа-смешением. Вам необходимо перенастроить дисплей для 32-битного режима, если это возможно.

...