1

PopUp を LayeredWindow にできるかどうか疑問に思っています。

Encoder 4 を使用していますが、プログラムがレイヤード ウィンドウをキャプチャしないようにするプロパティがあります。

ツールチップにフィードを表示するコードは次のとおりです

public class MyToolTip : ToolTip
{

    protected override void OnTemplateChanged(ControlTemplate oldTemplate, ControlTemplate newTemplate)
    {
        if (newTemplate != null)
        {
            this.Visibility = Visibility.Collapsed;
            this.IsOpen = true;
            Popup popup = GetPopupFromVisualChild(this);
            if (popup != null)
            {
                popup.AllowsTransparency = false;
            }
            this.IsOpen = false;
            this.Visibility = Visibility.Visible;
        }
    }

    private static Popup GetPopupFromVisualChild(Visual child)
    {
        Visual parent = child;
        FrameworkElement visualRoot = null;
        while (parent != null)
        {
            visualRoot = parent as FrameworkElement;
            parent = VisualTreeHelper.GetParent(parent) as Visual;
        }

        Popup popup = null;
        if (visualRoot != null)
        {
            popup = visualRoot.Parent as Popup;
        }
        //popup.
        return popup;
    }
}

Wpf :

<Grid>
        <Button Width="10" Height="10" Click="Button_Click">
        <Button.ToolTip>
            <w:MyToolTip Height="500" Width="550" StaysOpen="True">
                    <WindowsFormsHost x:Name="wrapper" Margin="0,0,0,0" Background="{x:Null}">
                    <wf:Panel x:Name="previewScreen"  BackColor="Transparent"  Size="500,500" >
                            <wf:Panel.Controls>
                            <wf:Panel x:Name="PreviewScreen2" BackColor="Transparent"  Size="500,500"></wf:Panel>
                            </wf:Panel.Controls>
                            </wf:Panel>
                    </WindowsFormsHost>
            </w:MyToolTip>
        </Button.ToolTip>
    </Button>
</Grid>

この問題は Encoder 4 で、プレビュー ウィンドウの HandleRef のみを受け入れます。

これは私が Encoder で行うことです: MediaSource は LiveDeviceSource です

if (mediaSource != null && mediaSource.PreviewWindow == null)
                mediaSource.PreviewWindow =
                        new PreviewWindow(new HandleRef(PreviewWindow.PreviewScreen2, PreviewWindow.PreviewScreen2.Handle));

私が欲しいのは、ウェブカメラのプレビューを表示するが画面に記録されていないツールチップを持つことです。

ポップアップを使用しない場合、フィードは表示されません。Altought Encoder はそれが LayeredWindow であることを理解し、それを記録しません。

ポップアップを使用すると、フィードが表示されますが、記録されています。どういうわけか、ツールチップに表示されていても、layeredWindow ではなくなりました。

いくつかの助けは大いに感謝され、報われるでしょう =)

4

0 に答える 0