заполненная круглая резинка в Приложении Winforms

как я могу потянуть нулевую круглую резинку непрозрачности по форме окон с 0,3 непрозрачностью? (Круглая резинка сделана после примера Microsoft


Обновление:

Мне нужна та круглая резинка для работы чего-то как маска. При использовании Jing или какого-либо другого инструмента снимка экрана Вы будете видеть ТОЧНО, что я должен сделать, когда делают Вы пытаетесь сделать снимок экрана: экран идет полупрозрачный и когда Вы сделаете выбор, Вы будете видеть 0 выборов непрозрачности

6
задан John Saunders 16 August 2010 в 19:21
поделиться

4 ответа

Это Дроид, который вы искали?

    public Form1()
    {
        InitializeComponent();
        DoubleBuffered = true;
    }

    bool mouseDown = false;
    Point mouseDownPoint = Point.Empty;
    Point mousePoint = Point.Empty;

    protected override void OnMouseDown(MouseEventArgs e)
    {
        base.OnMouseDown(e);
        mouseDown = true;
        mousePoint = mouseDownPoint = e.Location;
    }

    protected override void OnMouseUp(MouseEventArgs e)
    {
        base.OnMouseUp(e);
        mouseDown = false;
    }

    protected override void OnMouseMove(MouseEventArgs e)
    {
        base.OnMouseMove(e);
        mousePoint = e.Location;
        Invalidate();
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);

        if (mouseDown)
        {
            Region r = new Region(this.ClientRectangle);
            Rectangle window = new Rectangle(
                Math.Min(mouseDownPoint.X, mousePoint.X),
                Math.Min(mouseDownPoint.Y, mousePoint.Y),
                Math.Abs(mouseDownPoint.X - mousePoint.X),
                Math.Abs(mouseDownPoint.Y - mousePoint.Y));
            r.Xor(window);
            e.Graphics.FillRegion(Brushes.Red, r);
            Console.WriteLine("Painted: " + window);
        }
    }
7
ответ дан 10 December 2019 в 02:48
поделиться

Вам нужно использовать частично непрозрачный цвет при нанесении:

Обновлена ​​линия от связанной статьи, в MyDrawReversibleEctulectangleugle метода:

ControlPaint.DrawReversibleFrame( rc, Color.FromArgb(80, 120, 120, 120), FrameStyle.Dashed );
1
ответ дан 10 December 2019 в 02:48
поделиться

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

, устанавливая регион хорошо, все события будут переходить к другой форме.

Это так, как я разработал эквивалентную проблему (я не говорю, что это хорошее решение, но это работает)

0
ответ дан 10 December 2019 в 02:48
поделиться

Я использовал код, который @Dearmash предоставил в утилите захвата экрана, которая поставляется с моим приложением с открытым исходным кодом BugTracker. .СЕТЬ. Приложение не очень большое, поэтому, если вы занимаетесь захватом экрана, это может быть хорошей отправной точкой. Дополнительная информация здесь:

http://ifdefined.com/blog/post/Screen-capture-utility-in-C-NET.aspx

1
ответ дан 10 December 2019 в 02:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: