2

我需要将我的 WPFUSerControl插入到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时,为了使其不可见,我需要继续将所有ChildrenStrokes我的不透明度设置InkCanvas为1(这样我可以看到他们)。

我尝试使用该TransparencyKey属性,但它似乎不适用于ElementHost. 我该如何解决这个问题,如何在我的 Form 和我的 UserControl 之间设置不同的不透明度?

4

3 回答 3

1

AFAIK 不可能,因为 WPF 使用子像素 alpha 渲染,例如 winform 不可用

希望这有帮助

于 2013-11-29T13:04:58.563 回答
1

如果要承载在 Win Forms 上透明运行的 WPF 控件,请按照以下步骤操作

  • 创建 WPF 用户控件控件并设置背景="透明"。

  • 创建没有控件的 Win 用户控件,并在其后端编写以下代码:

    public WinControl()
    {
        InitializeComponent();
    }
    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;
    
            cp.ExStyle |= 0x00000020;
            return cp;
        }
    }
    
  • 现在将 WPF 用户控件放在 Win 用户控件上,并将 wpfusercontrol 停靠到其父级(win 用户控件)。

  • 现在将 win 用户控件拖到 |Win 窗体上并将 win 用户控件停靠到其父级 (Form)

你完成了。

于 2015-03-04T07:31:06.740 回答
0

您可以使用 Microsoft.Ink.dll 创建您自己的基于 WinForms 的 UserControl,它支持手写识别,如果您正在尝试这样做的话。

于 2013-12-08T09:32:15.207 回答