protected override void OnHandleCreated(EventArgs e) { base.OnHandleCreated(e); _savedSize = this.Size; _svgRenderer = new GdiGraphicsRenderer(); _svgRenderer.OnRender = new RenderEvent(this.OnRender); _svgWindow = new SvgPictureBoxWindow(this, _svgRenderer); }
public TestDockPanel() { InitializeComponent(); this.AutoScaleMode = AutoScaleMode.Dpi; this.DockAreas = DockAreas.Document | DockAreas.Float; this.CloseButton = false; labelConverted.Font = new Font("Segoe UI", 18F, FontStyle.Regular, GraphicsUnit.World, 0); labelExpected.Font = new Font("Segoe UI", 18F, FontStyle.Regular, GraphicsUnit.World, 0); _svgRenderer = new GdiGraphicsRenderer(); }
public SvgPictureBox() { InitializeComponent(); SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.AllPaintingInWmPaint, true); SetStyle(ControlStyles.OptimizedDoubleBuffer, true); //scriptEngineByMimeType = new TypeDictionary(); //SetMimeTypeEngineType("application/ecmascript", typeof(JScriptEngine)); renderer = new GdiGraphicsRenderer(); renderer.OnRender = new RenderEvent(this.OnRender); window = new SvgPictureBoxWindow(this, renderer); }
public void DrawTo(IntPtr hdc) { if (!this.DesignMode) { if (window != null) { GdiGraphicsWrapper gw = GdiGraphicsWrapper.FromHdc(hdc, true); GdiGraphicsRenderer r = ((GdiGraphicsRenderer)window.Renderer); gw.Clear(r.BackColor); r.GraphicsWrapper = gw; window.Renderer.Render((SvgDocument)window.Document); r.GraphicsWrapper = null; gw.Dispose(); } } }
/// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose(bool disposing) { if (disposing) { if (components != null) { components.Dispose(); components = null; } } if (_svgRenderer != null) { _svgRenderer.Dispose(); _svgRenderer = null; } base.Dispose(disposing); }
/// <summary> /// The following code will load the SVGDOM, render to a emf, and /// place the EMF on the clipboard. Kt seems more complicated than it should /// see http://www.dotnet247.com/247reference/msgs/23/118514.aspx /// for why the straight forward solution does not work. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void miCopy_Click(object sender, EventArgs e) { if (svgUrlCombo.Text.Length > 0) { int width = 500; int height = 500; // make SVG document with associated window so we can render it. SvgWindow window = new SvgPictureBoxWindow(width, height, null); GdiGraphicsRenderer renderer = new GdiGraphicsRenderer(); renderer.Window = window; window.Renderer = renderer; window.Source = svgUrlCombo.Text; // copy and paste code taken from // http://www.dotnet247.com/247reference/msgs/23/117611.aspx // putting a plain MetaFile on the clipboard does not work. // .Net's metafile format is not recognised by most programs. Graphics g = CreateGraphics(); IntPtr hdc = g.GetHdc(); Metafile m = new Metafile(hdc, EmfType.EmfOnly); g.ReleaseHdc(hdc); g.Dispose(); g = Graphics.FromImage(m); // draw the SVG here // NOTE: the graphics object is automatically Disposed by the // GdiRenderer. renderer.Graphics = g; renderer.Render(window.Document as SvgDocument); //window.Render(); // put meta file on the clipboard. IntPtr hwnd = this.Handle; if (Win32.OpenClipboard(hwnd)) { Win32.EmptyClipboard(); IntPtr hemf = m.GetHenhmetafile(); Win32.SetClipboardData(14, hemf); //CF_ENHMETAFILE=14 Win32.CloseClipboard(); } } }
public bool LoadDocument(string documentFilePath, SvgTestInfo testInfo, object extraInfo) { this.UnloadDocument(); if (extraInfo == null) { return(false); } if (string.IsNullOrWhiteSpace(documentFilePath) || File.Exists(documentFilePath) == false) { return(false); } var pngFilePath = extraInfo.ToString(); if (string.IsNullOrWhiteSpace(pngFilePath) || File.Exists(pngFilePath) == false) { return(false); } Image pngImage = null; try { pngImage = Image.FromFile(pngFilePath); if (pngImage == null) { return(false); } viewerExpected.Image = pngImage; viewerExpected.Width = pngImage.Width + 10; viewerExpected.Height = pngImage.Height + 10; } catch (Exception ex) { Trace.TraceError(ex.ToString()); return(false); } try { using (var svgRenderer = new GdiGraphicsRenderer(pngImage.Width, pngImage.Height)) { var svgWindow = svgRenderer.Window; svgWindow.Source = documentFilePath; svgRenderer.Render(svgWindow.Document); var svgImage = svgRenderer.RasterImage; viewerConverted.Image = svgImage; viewerConverted.Width = svgImage.Width + 10; viewerConverted.Height = svgImage.Height + 10; } } catch (Exception ex) { Trace.TraceError(ex.ToString()); return(false); } return(true); }