Я использую System.Windows.Controls.WebBrowser для различных вещей в своем приложении, и я заметил, что элементы декорации обрезаются, когда они должны появиться поверх WebBrowser.Я понимаю, что элемент управления WebBrowser действительно является оберткой вокруг COM-компонента и, вероятно, визуализируется по-другому, но мне было интересно, если кто-нибудь придумал, как решить эту проблему.
Это проблема, которую я вижу.Здесь у меня есть только образец рекламного элемента, который должен нарисовать большой красный круг в верхнем углу чего-либо (в качестве образца).
Когда я украшаю этим WebBrowser, я получаю такой результат:
Я ожидаю увидеть полный круг.
Вот код этого бесполезного рекламодателя, на случай, если это будет полезно:
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, но, надеюсь, это будет полезной информацией для кого-то.