gpt4 book ai didi

wpf - 在 WebBrowser 控件上显示装饰器

转载 作者:行者123 更新时间:2023-12-04 13:55:36 26 4
gpt4 key购买 nike

我在我的应用程序中使用 System.Windows.Controls.WebBrowser 处理各种事情,我注意到装饰器在它们应该出现在 WebBrowser 上时被切断了。我意识到 WebBrowser 控件实际上是一个围绕 COM 组件的包装器,并且呈现方式可能不同,但我想知道是否有人想出了如何解决这个问题。

这是我看到的问题。在这里,我只有一个示例装饰器,它应该在某物的顶角绘制一个大红色圆圈(作为示例)。

当我用这个装饰 WebBrowser 时,我得到了这个结果:



我希望看到完整的圆圈。

这是这个毫无值(value)的装饰器的代码,以防万一:

public class SillyAdorner : Adorner
{
public SillyAdorner(UIElement element) : base(element)
{

}
protected override void OnRender(DrawingContext drawingContext)
{
drawingContext.DrawEllipse(new SolidColorBrush(Colors.Red), new Pen(), new Point(7, 7), 30, 30);
base.OnRender(drawingContext);
}
}

下面是我在宿主控件的 OnRender 方法中将它应用到浏览器的方法:
    protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
var layer = AdornerLayer.GetAdornerLayer(browser);
layer.Add(new SillyAdorner(browser));
}

任何人都有任何黑客或解决方法吗?

编辑:我正在使用 .NET 4.0,如果这有区别的话。

编辑 #2:WebBrowser 似乎继承自 HwndHost,我已经看到另外一两个关于装饰器和 hwndsources 的问题,但我没有看到任何看起来可以为 WebControl 实现它的东西,但希望这是有用的信息某人。

最佳答案

我认为这不适用于 Adroner,但您可以使用透明的 Popup 控件在 WebBroswer 控件上 float 内容。更多细节和代码示例可以在 here 中找到.

关于wpf - 在 WebBrowser 控件上显示装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2283580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com