Как сделать форму частично прозрачной при перемещении? - PullRequest
0 голосов
/ 29 июля 2009

Как я могу установить непрозрачность winform около 50% при перемещении формы, перетаскивая строку заголовка и сбросив ее непрозрачность до 100%, когда левая кнопка мыши нажата.

Ответы [ 3 ]

3 голосов
/ 29 июля 2009

Интересно, что вы также можете сделать это в переопределениях OnResizeBegin и OnResizeEnd - это будет применяться как к перемещению, так и к изменению размера формы.

Если вы хотите изменить прозрачность только при перемещении, а не при изменении размера, ответ Алекса будет лучше.

2 голосов
/ 29 июля 2009

Вот пример кода:

    public partial class Form1 : System.Windows.Forms.Form
{
    private const long BUTTON_DOWN_CODE = 0xa1;
    private const long BUTTON_UP_CODE = 0xa0;
    private const long WM_MOVING = 0x216;

    static bool left_button_down = false;

    protected override void DefWndProc(ref System.Windows.Forms.Message m)
    {
        //Check the state of the Left Mouse Button
        if ((long)m.Msg == BUTTON_DOWN_CODE)
            left_button_down = true;
        else if ((long)m.Msg == BUTTON_UP_CODE)
            left_button_down = false;

        if (left_button_down)
        {
            if ((long)m.Msg == WM_MOVING)
            {
                //Set the forms opacity to 50% if user is moving
                if (this.Opacity != 0.5)
                    this.Opacity = 0.5;
            }
        }

        else if (!left_button_down)
            if (this.Opacity != 1.0)
                this.Opacity = 1.0;

        base.DefWndProc(ref m);
    }
}
2 голосов
/ 29 июля 2009

Установите Form.Opacity на 0,5 в ответ на WM_NCLBUTTONDOWN в WndProc вашей формы.

Затем установите непрозрачность на 1,0 при получении WM_NCLBUTTONUP .

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