Альфа-порог WPF

Есть ли альфа-порог в WPF? Я использую кисть #01000000, и на некоторых компьютерах она непрозрачна в отношении проверки удара мышью (нажатие этой кистью на поверхность), но на некоторых других компьютерах она считается полностью прозрачной и щелкает мышью. В чем дело?

UPD1: @Ален Нет. Свойство IsHitTestVisible не зависит от перехода по альфа-каналу. Здесь тело границы доступно для клика на всех компьютерах:

<Window
    x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" WindowStyle="None" AllowsTransparency="True" Background="Transparent">
    <Border BorderBrush="Red" BorderThickness="20" Background="#00000000" IsHitTestVisible="True"/>
</Window>

А здесь нет (но на некоторых компах кликабельно - вот в чем вопрос):

<Window
    x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" WindowStyle="None" AllowsTransparency="True" Background="Transparent">
    <Border BorderBrush="Red" BorderThickness="20" Background="#01000000" IsHitTestVisible="True"/>
</Window>

IsHitTestVisible имеет значение True в обоих случаях.


person Victor Ponomaryov    schedule 21.09.2011    source источник


Ответы (2)


Интересно, что Дэвид Энсон говорит в своем блоге здесь:

http://blogs.msdn.com/b/delay/archive/2011/08/18/invisible-pixels-are-just-as-clickable-as-real-pixels-tip-use-a-transparent-brush-to-make-quot-пустой-quot-parts-of-a-xaml-element-respond-to-mouse-and-touch-input.aspx

Что вы можете просто установить его на Прозрачный. Я всегда использовал #01000000 как OP. Один из обычных пользователей в блоге Дэвида говорит, что Transparent им не подходит. Интересно, связано ли это с проблемой ОП # 0100000, работающей на одних компьютерах, а не на других. Возможно, есть какая-то разница, кроме просто запуска на разных компьютерах?

person Tim    schedule 21.09.2011
comment
По умолчанию значение равно {x:Null} и не требует ввода с помощью мыши. Настройка кисти на прозрачность заставляет ее реагировать на ввод с помощью мыши. - person Louis Kottmann; 21.09.2011
comment
Жаль, что меня нет рядом с компьютером, на котором у меня была проблема в стабильной версии. У меня было два компьютера, одна и та же программа выполнялась через одну и ту же ссылку ClickOnce. У одного была проблема (переход по клику), а на другом компьютере все было в порядке. О прозрачной кисти. Мои наблюдения заключаются в том, что прозрачная кисть не просматривается только в границах одного и того же PresentationSource (одно окно). Мне нужно использовать окна с параметром AllowsTransparency=True, и в этом случае работает только кисть #01000000, чтобы сделать прозрачную, но не проходимую по клику поверхность. Прозрачная кисть в этом случае не работает. - person Victor Ponomaryov; 21.09.2011
comment
А, я понимаю, о чем ты говоришь, Виктор. Разница между щелчком одного элемента в окне WPF и переходом к другому элементу в том же окне, а также переходом через все окно WPF к другому приложению за ним. Верно? - person Tim; 21.09.2011

Вы должны установить это явно, используя свойство IsHitTestVisible.

person Alain    schedule 21.09.2011