Прозрачность в компактных рамках - PullRequest
6 голосов
/ 07 сентября 2010

Мне нужно создать изображение с прозрачным фоном в .NETCF, я использую пурпурный как фон, который я хочу сделать прозрачным. Я пытался сделать это, переопределив onPaint (). Но я не могу получить прозрачный фон? Вот что у меня есть:

protected override void OnPaint(PaintEventArgs e)
{
    Graphics g = e.Graphics;

    ImageAttributes imageAttributs = new ImageAttributes();
    imageAttributs.SetColorKey(Color.FromArgb(255, 0, 255), 
        Color.FromArgb(255, 0, 255));
    g.DrawImage(cross, crossRect, 200, 10, cross.Width, cross.Height,
        GraphicsUnit.Pixel, imageAttributs);

    base.OnPaint(e);
}

Но когда я пытаюсь включить ImageAttributes, мое изображение вообще не рисуется?

Ответы [ 3 ]

9 голосов
/ 07 сентября 2010

Ах, прозрачность в CF. Часы и дни, которые можно (и сделал) потратить впустую на это. Во-первых, вы можете дать нам немного больше информации об используемых вами изображениях (растровые изображения, png и т. Д.), Но мы, вероятно, можем вывести часть этого из вашего поста. Нам также нужно знать, находится ли он в дочернем контейнере (например, внутри рамки, панели и т. Д.).

Прозрачность Colorkey, безусловно, поддерживается (была с 2.0 - может быть, даже раньше). Проблема здесь в том, что у вас будет «кровоточить» родитель, если вы находитесь в детстве. Похоже, это то, что вы пытаетесь, но для меня это не совсем очевидно, поэтому у меня есть несколько вопросов для уточнения.

  • Является ли OnPaint переопределением формы или пользовательским элементом управления?
  • Почему вы вызываете базовый OnPaint () после вашей работы (в отличие от ранее или не работали вообще)?
  • Вы переопределили OnPaintBackground?

Сейчас я думаю, что у вас есть какая-то ошибка в том, как вы все называете, но у нас недостаточно кода, чтобы ее обнаружить.

Вот еще несколько ресурсов по рисованию и прозрачности:

Есть больше ресурсов для материала альфа-канала (что далеко не просто в CF), но так как похоже, что вы пытаетесь использовать colorkey, их должно быть достаточно.

3 голосов
/ 07 сентября 2010

Компактный каркас не поддерживает прозрачность - вы можете добиться поддержки через COM-взаимодействие.У Криса Лортона есть очень хорошая запись в блоге по альбандингу на компактной платформе.

1 голос
/ 07 сентября 2010

Похоже, что OpenNETCF уже управлял оболочками вокруг этого.Я уверен, что Крис Таке мог бы прокомментировать больше об этом.Кажется, он довольно активен на этом сайте, но выглядит так, словно его опередили :))

...