Pergunta

Eu preciso desenhar a página HTML. Página exibida em um elemento de quadro. O problema é que o InkCanvas não funciona com o quadro. Tentei inserir o TextBlock em vez de quadros - pintar obras.

Não funciona:

<Frame Grid.Row="1" Source="http://google.com/"></Frame>
<InkCanvas Grid.Row="1" x:Name="inkCanvas" Background="Transparent"></InkCanvas>

Trabalhar:

<TextBlock Grid.Row="1" Margin="10" Text="Some text"></TextBlock>
<InkCanvas Grid.Row="1" x:Name="inkCanvas" Background="Transparent"></InkCanvas>
Foi útil?

Solução

Quando o controle de quadros navega para o conteúdo HTML, o controle de quadros instancia internamente o controle ActiveX nativo do WebBrowser. Isso envolve a interoperidade HWND. Como resultado disso "Proplem de espaço aéreo" entra em jogo. Basicamente, isso significa que nenhum conteúdo do WPF pode se sobrepor que o hwnd acitvexo. Você pode contornar parcialmente esse implement, envolvendo a sobreposição em outro HWND (por exemplo, usando formulários WinFows e ElementHost). Mas essa solução não permitirá que você tenha transparência na sobreposição.

Outro truque que você poderia tentar é usar o WindowsFormShost para hospedar o Controle do navegador do Windows Forms em vez de usar um quadro.

Por último, mas não menos importante, você poderia usar o Controle de Webbrowser WPF Chromium WPF Em vez do controle de quadros, se você puder pagar. É baseado no Awesomium biblioteca. Que infelizmente é apenas Grátis para uso não comercial. Esta é a única solução que permite que você use todos os presentes avançados do WPF, como transformação (rotação, inclinação etc.), efeitos de bitmapes ou transparência etc. Largura As outras duas soluções que você está ligado a um retângulo opaco fixo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top