Как сбросить область рисования в вызове OnPaint - PullRequest
0 голосов
/ 21 января 2012

Я пытаюсь создать полупрозрачную кнопку управления пользователем, у которого непрозрачность фона изменяется с 30% черного до 70% черного на mouseEnter. Я могу успешно закрасить кнопку на 30% черным, но я не могу перейти с 70% до 30%. Как будто каждый раз, когда вызывается OnPaint (), он рисует то, что уже было, вместо того, чтобы начинать с нуля. Я использую подклассную панель в качестве фона пользовательского элемента управления.

Вот мой метод OnPaint для подклассной панели:

        Graphics g = e.Graphics;

        Rectangle rect = new Rectangle(0, 0, this.Width, this.Height);
        Brush brush = new SolidBrush(Color.FromArgb(Alpha, Color.Black)); // alpha is set by me

        g.FillRectangle(brush, rect);

        g.Dispose();

Я играл с g.Clear () и g.Restore (), но мне не повезло. Есть идеи?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 24 января 2012

Я решил эту проблему, заменив 30% непрозрачного черного и 70% непрозрачного черного на фоновое изображение.Я также установил для кнопки BackColor значение Color.Transparent.

0 голосов
/ 21 января 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...