2

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に、フォームの唯一のコントロールとしてオブジェクトを使用します。Children次のことを行う可能性が必要です: フォームの不透明度を 0 に設定した場合、フォームを非表示にするために、すべてのおよびStrokesMyの不透明度を 1 に設定し続ける必要がありますInkCanvas(だから、彼ら)。

プロパティを使用してみTransparencyKeyましたが、 では動作しないようElementHostです。この問題を解決するにはどうすればよいですか?また、フォームとユーザー コントロールの間で異なる不透明度を設定するにはどうすればよいですか?

4

3 に答える 3

1

Win フォームで透過的に動作する WPF コントロールをホストする場合は、次の手順に従います。

  • WPF ユーザー コントロール コントロールを作成し、background ="transparent" を設定します。

  • コントロールのない Win ユーザー コントロールを作成し、そのバックエンドに次のコードを記述します。

    public WinControl()
    {
        InitializeComponent();
    }
    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;
    
            cp.ExStyle |= 0x00000020;
            return cp;
        }
    }
    
  • ここで、Win ユーザー コントロールに WPF ユーザー コントロールを配置し、wpfusercontrol をその親 (win ユーザー コントロール) にドッキングします。

  • ここで、win ユーザー コントロールを |Win フォームにドラッグし、win ユーザー コントロールをその親 (フォーム) にドッキングします。

これで完了です。

于 2015-03-04T07:31:06.740 に答える
1

たとえば、WPFはwinformでは使用できないサブピクセルアルファレンダリングを使用するため、不可能なAFAIK

この助けを願っています

于 2013-11-29T13:04:58.563 に答える