Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- LoadCompletedEventHandler h = null;
- h = (o, e) =>
- {
- WpfControlRenderer.CreateControlScreenshot((FrameworkElement)o, destFileName);
- _wb.LoadCompleted -= h;
- };
- _wb.LoadCompleted += h;
- var size = new Size(_wb.Width, _wb.Height);
- _wb.Measure(size);
- _wb.Arrange(new Rect(size));
- _wb.Navigate(url);
- class NativeMethods
- {
- [ComImport]
- [Guid("0000010D-0000-0000-C000-000000000046")]
- [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
- interface IViewObject
- {
- void Draw([MarshalAs(UnmanagedType.U4)] uint dwAspect, int lindex, IntPtr pvAspect, [In] IntPtr ptd, IntPtr hdcTargetDev, IntPtr hdcDraw, [MarshalAs(UnmanagedType.Struct)] ref RECT lprcBounds, [In] IntPtr lprcWBounds, IntPtr pfnContinue, [MarshalAs(UnmanagedType.U4)] uint dwContinue);
- }
- [StructLayout(LayoutKind.Sequential, Pack = 4)]
- struct RECT
- {
- public int Left;
- public int Top;
- public int Right;
- public int Bottom;
- }
- public static void GetImage(object obj, Image destination, Color backgroundColor)
- {
- using(Graphics graphics = Graphics.FromImage(destination))
- {
- IntPtr deviceContextHandle = IntPtr.Zero;
- RECT rectangle = new RECT();
- rectangle.Right = destination.Width;
- rectangle.Bottom = destination.Height;
- graphics.Clear(backgroundColor);
- try
- {
- deviceContextHandle = graphics.GetHdc();
- IViewObject viewObject = obj as IViewObject;
- viewObject.Draw(1, -1, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, deviceContextHandle, ref rectangle, IntPtr.Zero, IntPtr.Zero, 0);
- }
- finally
- {
- if(deviceContextHandle != IntPtr.Zero)
- {
- graphics.ReleaseHdc(deviceContextHandle);
- }
- }
- }
- }
- }
- Bitmap screenshot = new Bitmap(1024, 768);
- NativeMethods.GetImage(webBrowser.ActiveXInstance, screenshot, Color.White);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement