Прозрачный цветовой ключ, «показывающий» во время появления и исчезновения формы - PullRequest
1 голос
/ 17 августа 2011

Само собой разумеется, мой GooglFu сегодня слаб.

У меня есть небольшая WinForm с асимметричным изображением на заднем плане. Чтобы приспособить это изображение, сама форма немного больше, чем само изображение.

У меня установлен цвет фона форм LightSalmon, а также TransparencyKey формы.

Я не думаю, что абсолютно необходимо публиковать код (я думаю, что он пришел из CodeProject), который делает это немного, но, на всякий случай, я также включил его.

FadeIn:

    private void opTimer_Tick(object sender, EventArgs e)
    {
        if (opacityIncrease > 0)
        {
            if (this.Opacity < 1)
                this.Opacity += opacityIncrease;
        }
        else
        {
            if (this.Opacity > 0)
                this.Opacity += opacityIncrease;
            else
                this.Close();
        }
    }

FadeOut (вызывается при событии formClosing)

    public void FadeForm()
    {
        opacityIncrease = -opacityDecrease;
    }

Код работает так, как должен, но проблема заключается в том, что форма исчезает и исчезает. Когда форма исчезает, я вижу фон форм, этот ужасный LightSalmon. Как только форма достигает полной непрозрачности, фон становится полностью прозрачным.

Есть ли способ сохранить цвет TransparencyKey (фон форм), ну и как же прозрачный во время появления / исчезновения?

Самым простым решением было бы заменить фоновое изображение формы на то, которое соответствует форме, не беспокоясь обо всем бизнесе TransparencyKey, но мне скорее нравится изображение, которое я использую, но это, безусловно, не ShowStopper для измени его на что-нибудь другое.

Использование VS2008, .NET 3.5

Как всегда, с удовольствием отвечу на любые дополнительные вопросы, если это необходимо.

Спасибо.

1 Ответ

0 голосов
/ 25 августа 2011

Могу догадаться, что Fadeout \ Fadein меняет значение Pixel и, таким образом, оно не равно прозрачному ключу.

только когда оно равно, оно снова становится прозрачным.

если вы можете, попробуйте ограничить секцию постепенного исчезновения / входа, чтобы не включать область LightSalmon - она ​​должна оставаться в том же значении пикселей иоставайся прозрачным всегда.

...