Estoy usando el System.Windows.Controls.WebBrowser para varias cosas en mi aplicación y me he dado cuenta de que los adornos se cortan cuando se supone que aparecen sobre un WebBrowser. Me doy cuenta de que el control WebBrowser es realmente una envoltura alrededor de un componente COM y, probablemente, rinde de manera diferente, pero me preguntaba si alguien descubrió cómo resolver esto.Mostrar un Adorner sobre un control WebBrowser
Este es el problema que estoy viendo. Aquí tengo un adorno de muestra que se supone que dibuja un gran círculo rojo en la esquina superior de algo (como muestra).
Cuando adornar el WebBrowser con esto, puedo obtener este resultado:
espero ver el círculo completo.
Aquí está el código para este adorner sin valor, en caso de que sea útil:
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);
}
}
Y aquí es cómo lo aplico al navegador en el método OnRender del control de host:
protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
var layer = AdornerLayer.GetAdornerLayer(browser);
layer.Add(new SillyAdorner(browser));
}
¿Alguien tiene hacks o soluciones para esto?
Editar: Estoy usando .NET 4.0, si eso hace la diferencia.
Edición # 2: WebBrowser parece heredar de HwndHost, lo que he visto otra pregunta o dos con respecto adorners y hwndsources, pero no estoy viendo todo lo que parece como si pudiera ponerlo en práctica para el WebControl, pero con suerte esta es información útil para alguien.
Sí ... lo había visto en otro lugar. Parece que esto se debe a que una ventana emergente también es un hwnd, así que es útil. Lo único aquí es que se cortan adornos destinados a decorar otros objetos a su alrededor. Actualizaré mi respuesta para reflejar esto. Muy buena sugerencia, sin embargo ... Podría ver cómo envolver mi adorno en hwnd. –