不幸的是,我还没有足够的声誉来发表评论,所以我会把它作为答案。我最近在使用 Flash 时遇到了非常相似的问题,最终我使用了 WindowsFormsHost 和Overlays/Adorners。只是我的2美分。
这是 XAML 创建一个覆盖作为弹出窗口:
<Grid>
<Canvas >
<WebBrowser x:Name="wbMain" Width="800" Height="500"></WebBrowser>
<Popup x:Name="puOverlay" AllowsTransparency="True" Placement="Bottom" PlacementTarget="{Binding ElementName=wbMain}">
<Ellipse Canvas.Left="0" Canvas.Top="0" Height="50" Name="headEllipse" Stroke="Black" Fill="Orange" Width="50" Canvas.ZIndex="5"/>
</Popup>
<Ellipse Canvas.Left="0" Canvas.Top="0" Height="50" Name="headEllipse1" Stroke="Black" Fill="Orange" Width="50" Canvas.ZIndex="5"/>
</Canvas>
</Grid>
为简单起见,我将叠加层减少为一个椭圆。Web 浏览器托管在 WindowsFormsHost 中。这是放置和显示它的代码:
public MainWindow()
{
InitializeComponent();
puOverlay.VerticalOffset = -60;
puOverlay.HorizontalOffset = (wbMain.ActualWidth / 2) - 20;
puOverlay.IsOpen = true;
...
}
很简单,但是不要犹豫,问是否还有不清楚的地方。