WPF Перемещение Adorner вне AdornerLayer или Окна

У меня есть рекламщик, который движется вместе с курсором мыши. Однако, как только мышь выходит за пределы окна, украшатель обрывается.

Можно ли расширить рекламный слой на весь экран или создать новый рекламный слой.

2 ответа

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

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

  1. Создать новое окно. Установите для WindowBorderStyle значение "Нет", для параметра "Ширина и высота" - значение "Авто", а для параметра "WindowState" - значение "Развернуто". (В данный момент я не смотрю на IDE, поэтому имена свойств могут быть немного не совпадают.)

  2. Скопируйте код XAML для сетки (или любого основного контейнера, который вы используете) в исходное окно и вставьте его в новое окно. Убедитесь, что вы заменили пустую сетку в новом окне на сетку, которую вы вставили.

Это должно позволить вам сделать так, чтобы слой надстройки следовал за мышью вокруг всего окна.

Опять же, опишите здесь свою точную цель, чтобы я мог дать ответ, лучше соответствующий вашим конкретным потребностям.

Может быть, он хочет нарисовать область выбора, я имею в виду ту же проблему, но вы можете увидеть ссылку ниже, это работает. http://www.codeproject.com/Articles/22952/WPF-Diagram-Designer-Part-2
Я обнаружил, что вы не можете получить событие мыши, когда фон прозрачный. Если вы дадите рекламодателю некоторый фон, тогда все в порядке.

protected override void OnRender(DrawingContext dc) {
    dc.DrawRectangle(bg, null, new Rect(RenderSize));
    dc.DrawRectangle(Brushes.Red, null, new Rect(start, end));
}

кисть bg похожа на

private Brush bg = new SolidColorBrush(Color.FromArgb(0x01, 0, 0, 0));
Другие вопросы по тегам