WPF Перемещение Adorner вне AdornerLayer или Окна - PullRequest
6 голосов
/ 30 июля 2010

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

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

Ответы [ 2 ]

0 голосов
/ 12 апреля 2012

возможно он хочет нарисовать область выбора У меня та же проблема, но вы можете увидеть ссылку ниже, она работает. 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));
0 голосов
/ 02 февраля 2011

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

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

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

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

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

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

...