WPF Перемещение Adorner вне AdornerLayer или Окна
У меня есть рекламщик, который движется вместе с курсором мыши. Однако, как только мышь выходит за пределы окна, украшатель обрывается.
Можно ли расширить рекламный слой на весь экран или создать новый рекламный слой.
2 ответа
Вы, вероятно, могли бы сделать это, хотя я не уверен, что именно вы хотите сделать со слоем adorner. Мое решение позволит рекламодателю следовать за мышью, пока окно имеет фокус. Пожалуйста, поделитесь своей конечной целью, чтобы я мог лучше вам помочь.
Моя идея состоит в том, чтобы создать полноэкранное окно без полей с прозрачным фоном, в котором можно разместить любые элементы управления, которые вы хотите. Непрозрачная часть вашего окна будет внутри сетки.
Создать новое окно. Установите для WindowBorderStyle значение "Нет", для параметра "Ширина и высота" - значение "Авто", а для параметра "WindowState" - значение "Развернуто". (В данный момент я не смотрю на IDE, поэтому имена свойств могут быть немного не совпадают.)
Скопируйте код 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));