Хостинг WPF UserControl в прозрачной Windows.Form
Мне нужно вставить свой WPF USerControl
в Windows.Form
, Это мой контроль:
<UserControl x:Class="WpfControlLibrary1.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Background="Transparent">
<InkCanvas x:Name="Ink" Background="Transparent" />
</UserControl>
Для размещения этого элемента управления я использую ElementHost
объект как единственный элемент управления моей формы. Мне нужно иметь возможность сделать следующее: когда я устанавливаю непрозрачность формы на 0, чтобы сделать ее невидимой, мне нужно продолжать иметь непрозрачность всех Children
а также Strokes
моего InkCanvas
до 1 (чтобы я мог их видеть).
Я пытался использовать TransparencyKey
свойство, но, похоже, не работает с ElementHost
, Как я могу решить эту проблему, и как я могу установить различную непрозрачность между моей формой и моим UserControl?
3 ответа
AFAIK, это невозможно, так как WPF использует субпиксельный альфа-рендеринг, который, например, недоступен для winform.
Надеюсь это поможет
Если вы хотите разместить элемент управления WPF, который ведет себя прозрачно в Win Forms, выполните следующие действия.
Создайте WPF usercontrol control и установите background ="transparent".
Создайте пользовательский элемент управления Win без элементов управления и напишите следующий код:
public WinControl() { InitializeComponent(); } protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x00000020; return cp; } }
Теперь поместите WPF usercontrol в пользовательский элемент управления Win и прикрепите wpfusercontrol к его родительскому элементу (пользовательский элемент управления win).
Теперь перетащите пользовательский элемент управления win в форму |Win и закрепите пользовательский элемент управления win в родительский элемент (Форма).
И вы сделали.
Вы можете использовать Microsoft.Ink.dll для создания собственного UserControl на основе WinForms, который поддерживает распознавание рукописного ввода, если это то, что вы пытаетесь сделать.