private void btnBegin_Click(object sender, EventArgs e) { //清空文本,不能给text赋值,否则颜色设置会出现问题 rtbInfo.Clear(); //检测路径合法性 if (!Directory.Exists(tbInput.Text) || !Directory.Exists(tbOutput.Text)) { rtbInfo.SelectionColor = Color.Red; rtbInfo.AppendText("输入路径或输出路径不存在\n"); return; } //准备转换工作 btnBegin.Enabled = false; rtbInfo.SelectionColor = Color.Green; rtbInfo.AppendText("开始转换,如无特殊需要请勿修改参数...\n"); string[] svgs = Directory.GetFiles(tbInput.Text, "*.svg"); rtbInfo.SelectionColor = Color.Black; rtbInfo.AppendText("共读取到" + svgs.Length + "个svg文件\n"); int successCount = 0; //开始每一次转换 for (int i = 0; i < svgs.Length; i++) { Bitmap bitmap = new Bitmap((int)nudWidth.Value, (int)nudHeight.Value); Graphics graphics = Graphics.FromImage(bitmap); //可能会出现路径问题或其他错误,记录成功个数 try { SvgDocument svgDocument = SvgDocument.Open(svgs[i]); ISvgRenderer renderer = SvgRenderer.FromGraphics(graphics); svgDocument.Width = (int)nudWidth.Value; svgDocument.Height = (int)nudHeight.Value; svgDocument.Draw(renderer); bitmap.Save(tbOutput.Text + "\\" + Path.GetFileNameWithoutExtension(svgs[i]) + "." + cbFormat.Text);//怕读取顺序与原顺序不一样,所以按照原名字保存 successCount++; rtbInfo.AppendText("第" + (i + 1) + "个转换成功\n"); } catch { rtbInfo.SelectionColor = Color.Red; rtbInfo.AppendText("第" + (i + 1) + "个转换失败"); rtbInfo.SelectionColor = Color.Black; } } //转换完成,完成善后工作 rtbInfo.SelectionColor = Color.Green; rtbInfo.AppendText("转换完成,共" + svgs.Length + "个文件," + successCount + "个转换成功"); btnBegin.Enabled = true; }
public static void Run() { // ExStart:1 string dataDir = RunExamples.GetDataDir_Data(); using (var document = new Aspose.Html.Dom.Svg.SVGDocument("<svg xmlns='http://www.w3.org/2000/svg'><circle cx='50' cy='50' r='40'/></svg>", @"c:\work\")) { using (SvgRenderer renderer = new SvgRenderer()) using (ImageDevice device = new ImageDevice(dataDir + @"document_out.png")) { renderer.Render(device, document); } } // ExEnd:1 }
public static void Run() { //ExStart: ConvertSVGFilesUsingRenderer string dataDir = RunExamples.GetDataDir_Data(); using (var document = new SVGDocument(Path.Combine(dataDir, "smiley.svg"))) { using (SvgRenderer renderer = new SvgRenderer()) using (XpsDevice device = new XpsDevice(dataDir + "ConvertSVGFilesUsingRenderer_out.xps")) { renderer.Render(device, document); } } //ExEnd: ConvertSVGFilesUsingRenderer }
private void button_toVector_Click(object sender, EventArgs e) { StartEvent(); SvgRenderer svg = new SvgRenderer(); SvgRenderer.SvgImage si = svg.Render(qrCodeWriter.Encode(qCode), qrCodeWriter.Format, qCode); var file = File.Open("D:\\a.eps", FileMode.OpenOrCreate); byte[] b = Encoding.UTF8.GetBytes(si.ToString()); file.Write(b, 0, b.Length); file.Close(); application.ActiveLayer.Import("D:\\a.eps"); //File.Delete("D:\\a.eps"); EndEvent(); }
static public CodeRenderer Create(CodeRenderType eType, CodeRenderOptions xOptions = null) { CodeRenderer xRenderer = null; // switch (eType) { case CodeRenderType.Svg: xRenderer = new SvgRenderer(); break; case CodeRenderType.Png: xRenderer = new PngRenderer(); break; } // xRenderer.m_xOptions = xOptions; // return(xRenderer); }
protected Bitmap PaintChart(DevExpress.XtraCharts.Native.Chart chart, int width = 2000, int height = 1200, int?dpi = null) { if (_Chart.Diagram != null) { SetupDiagram(_Chart.Diagram); } if (dpi == null || dpi == 0) { dpi = DefaultDPI; } float scaleBitmap = dpi.Value / 300f; float scaleSVG = scaleBitmap * 96f / 300f; var svg = chart.CreateSvg(new Size((int)Math.Ceiling(width * scaleSVG), (int)Math.Ceiling(height * scaleSVG))); var doc = SvgDocument.Open(svg); doc.ShapeRendering = SvgShapeRendering.GeometricPrecision; var bitmap = new Bitmap((int)Math.Ceiling(width * scaleBitmap), (int)Math.Ceiling(height * scaleBitmap)); bitmap.SetResolution(dpi.Value, dpi.Value); using (var graphics = Graphics.FromImage(bitmap)) { graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; graphics.SmoothingMode = SmoothingMode.HighQuality; graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit; graphics.Clear(Color.White); var renderer = SvgRenderer.FromGraphics(graphics); renderer.SmoothingMode = SmoothingMode.HighQuality; if (scaleSVG != 1f && scaleSVG > 0f) { renderer.ScaleTransform(1 / scaleSVG, 1 / scaleSVG); } doc.Draw(renderer); } return(bitmap); }
private Bitmap CreateSourceGraphic() { var graphic = new Bitmap((int)(_bounds.Width + 2 * _inflate * _bounds.Width + _bounds.X), (int)(_bounds.Height + 2 * _inflate * _bounds.Height + _bounds.Y)); using (var renderer = SvgRenderer.FromImage(graphic)) { renderer.SetBoundable(_renderer.GetBoundable()); var transform = new Matrix(); transform.Translate(_bounds.Width * _inflate, _bounds.Height * _inflate); renderer.Transform = transform; //renderer.Transform = _renderer.Transform; //renderer.Clip = _renderer.Clip; _renderMethod.Invoke(renderer); } return(graphic); }
public SvgRenderer GetIconRenderer(GraphNode node) { if (node == null) { throw new ArgumentNullException("node"); } var icon = node.Icon; SvgRenderer renderer = null; Stack <string> fallbackIcons = null; while (icon != null) { if (TryGetIconRenderer(icon, out renderer)) { break; } else { if (fallbackIcons == null) { fallbackIcons = new Stack <string>(); } fallbackIcons.Push(icon.Name); icon = icon.GetDefaultIcon(); } } if (renderer == null) { if (node.Icon.IsIncludeElement) { TryGetIconRenderer(ElementIcon.Include, out renderer); } else { TryGetIconRenderer(ElementIcon.Default, out renderer); } } while (fallbackIcons != null && fallbackIcons.Count > 0) { rendererCache.Add(fallbackIcons.Pop(), renderer); } return(renderer); }
protected virtual Bitmap PaintSankey(SankeyDiagramHostControl sankey, int?dpi = null) { if (dpi == null || dpi == 0) { dpi = DefaultDPI; } float scaleBitmap = dpi.Value / 300f; float scaleSVG = 1f; using var streamSvg = new MemoryStream(); sankey.ExportToSvg(streamSvg); streamSvg.Seek(0, SeekOrigin.Begin); var doc = SvgDocument.Open <SvgDocument>(streamSvg); doc.ShapeRendering = SvgShapeRendering.GeometricPrecision; streamSvg.Close(); var bitmap = new Bitmap((int)Math.Ceiling(sankey.Width * scaleBitmap), (int)Math.Ceiling(sankey.Height * scaleBitmap)); bitmap.SetResolution(dpi.Value, dpi.Value); using (var graphics = Graphics.FromImage(bitmap)) { graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; graphics.SmoothingMode = SmoothingMode.HighQuality; graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit; graphics.Clear(Color.White); var renderer = SvgRenderer.FromGraphics(graphics); renderer.SmoothingMode = SmoothingMode.HighQuality; if (scaleSVG != 1f && scaleSVG > 0f) { renderer.ScaleTransform(1 / scaleSVG, 1 / scaleSVG); } doc.Draw(renderer); } return(bitmap); }
public void ApplyFilter(SvgVisualElement element, SvgRenderer renderer) { this.Buffer.Clear(); this.PopulateDefaults(element, renderer); IEnumerable <SvgFilterPrimitive> primitives = this.Children.OfType <SvgFilterPrimitive>(); if (primitives.Count() > 0) { foreach (var primitive in primitives) { this.Buffer.Add(primitive.Result, (e, r) => primitive.Process()); } // Render the final filtered image renderer.DrawImageUnscaled(this.Buffer.Last().Value(element, renderer), new Point(0, 0)); } }
public void ApplyFilter(SvgVisualElement element, SvgRenderer renderer) { this.Buffer.Clear(); this.PopulateDefaults(element, renderer); IEnumerable<SvgFilterPrimitive> primitives = this.Children.OfType<SvgFilterPrimitive>(); if (primitives.Count() > 0) { foreach (var primitive in primitives) { this.Buffer.Add(primitive.Result, (e, r) => primitive.Process()); } // Render the final filtered image renderer.DrawImageUnscaled(this.Buffer.Last().Value(element, renderer), new Point(0, 0)); } }
public void TestSmoothingModeRestoreForGraphics() { var visualElementMock = new Mock <SvgVisualElement>(); visualElementMock.Setup(_ => _.Attributes).CallBase(); var visualElement = visualElementMock.Object; visualElement.ShapeRendering = SvgShapeRendering.Auto; var g = Graphics.FromHwnd(IntPtr.Zero); var renderer = SvgRenderer.FromGraphics(g); g.SmoothingMode = SmoothingMode.AntiAlias; visualElement.RenderElement(renderer); Assert.That(g.SmoothingMode, Is.EqualTo(SmoothingMode.AntiAlias)); }
private Bitmap CreateSourceGraphic(SvgVisualElement element, SvgRenderer renderer) { if (this.sourceGraphic == null) { RectangleF bounds = element.Path.GetBounds(); this.sourceGraphic = new Bitmap((int)bounds.Width, (int)bounds.Height); using (var graphics = Graphics.FromImage(this.sourceGraphic)) { graphics.Clip = renderer.Clip; graphics.Transform = renderer.Transform; element.RenderElement(SvgRenderer.FromGraphics(graphics)); graphics.Save(); } } return(this.sourceGraphic); }
public void Draw(Graphics gr, RectangleF rect, ImageAttributes attributes = null) { if (IsSVG) { //EnsureSVG(); // either of these following lines can be used to test function below //Draw(gr, rect, new RectangleF(0, 0, m_SVG.Width, m_SVG.Height), attributes); //Draw(gr, new PointF[] { rect.Location, rect.TopRight(), rect.BottomLeft() }, new RectangleF(0, 0, m_SVG.Width, m_SVG.Height), attributes); //return; var state = gr.Save(); using (ISvgRenderer render = SvgRenderer.FromGraphics(gr)) { //render.Transform = gr.Transform; - redundant as it does this anyway. Doing this ...Clone might be useful so the original matrix didn't get corrupted, but safer to just store entire state anyway render.TranslateTransform(rect.Left, rect.Top, MatrixOrder.Prepend); render.ScaleTransform(rect.Width / m_SVG.Width, rect.Height / m_SVG.Height, MatrixOrder.Prepend); m_SVG.Draw(render); } gr.Restore(state); } else { gr.DrawImage(GetNetImage(), rect, attributes); } }
static Bitmap RenderSvg(SvgDocument svgDoc, double scaleFactor, int oversampling) { var dimensions = svgDoc.GetDimensions(); var finalWidth = (int)Math.Round(dimensions.Width * scaleFactor); var finalHeight = (int)Math.Round(dimensions.Height * scaleFactor); var renderWidth = finalWidth * oversampling; var renderHeight = finalHeight * oversampling; var bitmap = new Bitmap( renderWidth, renderHeight, PixelFormat.Format32bppArgb); using (Graphics g = Graphics.FromImage(bitmap)) { g.TextRenderingHint = TextRenderingHint.AntiAlias; g.PixelOffsetMode = PixelOffsetMode.Half; g.TextContrast = 1; g.SmoothingMode = SmoothingMode.None; g.CompositingQuality = CompositingQuality.HighQuality; g.InterpolationMode = InterpolationMode.Default; using (var renderer = new SvgRendererWithNoSmoothControl(SvgRenderer.FromImage(bitmap))) { renderer.SetBoundable( new GenericBoundable(0.0f, 0.0f, bitmap.Width, bitmap.Height)); renderer.ScaleTransform( bitmap.Width / dimensions.Width, bitmap.Height / dimensions.Height, MatrixOrder.Append); svgDoc.Overflow = SvgOverflow.Auto; svgDoc.RenderElement(renderer); } } return(bitmap); }
public static void Save(Control?control, Size size, string path) { if (control is null) { return; } if (path.EndsWith("png", StringComparison.OrdinalIgnoreCase)) { PngRenderer.Render(control, size, path); } if (path.EndsWith("svg", StringComparison.OrdinalIgnoreCase)) { using var stream = File.Create(path); SvgRenderer.Render(control, size, stream); } if (path.EndsWith("pdf", StringComparison.OrdinalIgnoreCase)) { using var stream = File.Create(path); PdfRenderer.Render(control, size, stream, 96); } if (path.EndsWith("xps", StringComparison.OrdinalIgnoreCase)) { using var stream = File.Create(path); XpsRenderer.Render(control, size, stream, 96); } if (path.EndsWith("skp", StringComparison.OrdinalIgnoreCase)) { using var stream = File.Create(path); SkpRenderer.Render(control, size, stream); } }
/// <summary> /// /// </summary> /// <param name="sourcePathList"></param> /// <param name="device"></param> protected override void Render(string[] sourcePathList, IDevice device) { SVGDocument[] docList = sourcePathList.Select <string, SVGDocument>( path => new SVGDocument(path)) .ToArray(); try { using (SvgRenderer renderer = new SvgRenderer()) { renderer.Render(device, docList); } } catch (Exception ex) { throw ex; } finally { foreach (var doc in docList) { doc.Dispose(); } } }
/// <summary> /// Renders the <see cref="SvgElement"/> and contents to the specified <see cref="SvgRenderer"/> object. /// </summary> /// <param name="renderer">The <see cref="SvgRenderer"/> object to render to.</param> protected override void Render(SvgRenderer renderer) { base.RenderChildren(renderer); }
public async Task ProcessRequest() { var msg = $"{_context.Request.HttpMethod} {_context.Request.Url}"; Console.WriteLine(msg); var url = _context.Request.RawUrl; if (url != null && url != "/" && url != "" && url != "/new" && url != "/close") { _context.Response.StatusCode = 401; _context.Response.Close(); return; } var sb = new StringBuilder(); sb.AppendLine("<html>"); sb.AppendLine("<head>"); sb.AppendLine(" <link rel=\"icon\" href=\"data:;base64,iVBORw0KGgo=\">"); sb.AppendLine("</head>"); sb.AppendLine("<body>"); await Utilities.RunUiJob(() => { var control = Repl.GetMainView(); if (control is null) { return; } switch (url) { case "/new": (control.DataContext as ProjectEditorViewModel)?.OnNew(null); Dispatcher.UIThread.RunJobs(); break; case "/close": (control.DataContext as ProjectEditorViewModel)?.OnCloseProject(); Dispatcher.UIThread.RunJobs(); break; } Console.WriteLine($"Rendering..."); var sw = new Stopwatch(); sw.Start(); var size = new Size(1366, 690); using var stream = new MemoryStream(); SvgRenderer.Render(control, size, stream); stream.Position = 0; using var reader = new StreamReader(stream); var svg = reader.ReadToEnd(); sb.AppendLine(svg); sw.Stop(); Console.WriteLine($"Done in {sw.ElapsedMilliseconds}ms"); }); sb.AppendLine("</body></html>"); var bytes = Encoding.UTF8.GetBytes(sb.ToString()); _context.Response.ContentLength64 = bytes.Length; _context.Response.ContentType = "text/html"; _context.Response.StatusCode = 200; _context.Response.OutputStream.Write(bytes, 0, bytes.Length); _context.Response.OutputStream.Close(); }
/// <summary> /// Renders the <see cref="SvgElement"/> and contents to the specified <see cref="SvgRenderer"/> object. /// </summary> /// <param name="renderer">The <see cref="SvgRenderer"/> object to render to.</param> protected override void Render(SvgRenderer renderer) { // Do nothing. Children should NOT be rendered. }
private void PopulateDefaults(SvgVisualElement element, SvgRenderer renderer) { this.ResetDefaults(); this.Buffer.Add(SvgFilterPrimitive.SourceGraphic, this.CreateSourceGraphic); this.Buffer.Add(SvgFilterPrimitive.SourceAlpha, this.CreateSourceAlpha); }
private Bitmap CreateSourceGraphic(SvgVisualElement element, SvgRenderer renderer) { if (this.sourceGraphic == null) { RectangleF bounds = element.Path.GetBounds(); this.sourceGraphic = new Bitmap((int)bounds.Width, (int)bounds.Height); using (var graphics = Graphics.FromImage(this.sourceGraphic)) { graphics.Clip = renderer.Clip; graphics.Transform = renderer.Transform; element.RenderElement(SvgRenderer.FromGraphics(graphics)); graphics.Save(); } } return this.sourceGraphic; }
private Bitmap CreateSourceAlpha(SvgVisualElement element, SvgRenderer renderer) { if (this.sourceAlpha == null) { Bitmap source = this.Buffer[SvgFilterPrimitive.SourceGraphic](element, renderer); float[][] colorMatrixElements = { new float[] {0, 0, 0, 0, 0}, // red new float[] {0, 0, 0, 0, 0}, // green new float[] {0, 0, 0, 0, 0}, // blue new float[] {0, 0, 0, 1, 1}, // alpha new float[] {0, 0, 0, 0, 0} }; // translations var matrix = new ColorMatrix(colorMatrixElements); ImageAttributes attributes = new ImageAttributes(); attributes.SetColorMatrix(matrix); this.sourceAlpha = new Bitmap(source.Width, source.Height); using (var graphics = Graphics.FromImage(this.sourceAlpha)) { graphics.DrawImage(source, new Rectangle(0, 0, source.Width, source.Height), 0, 0, source.Width, source.Height, GraphicsUnit.Pixel, attributes); graphics.Save(); } } return this.sourceAlpha; }
/// <summary> /// Initializes a new instance of the <see cref="BarcodeWriterSvg"/> class. /// </summary> public BarcodeWriterSvg() { Renderer = new SvgRenderer(); }
/// <summary> /// Renders the <see cref="SvgElement"/> and contents to the specified <see cref="SvgRenderer"/> object. /// </summary> /// <param name="renderer">The <see cref="SvgRenderer"/> object to render to.</param> protected override void Render(SvgRenderer renderer) { // Do nothing }
/// <summary> /// Renders the <see cref="SvgElement"/> and contents to the specified <see cref="SvgRenderer"/> object. /// </summary> /// <param name="renderer">The <see cref="SvgRenderer"/> object to render to.</param> protected override void Render(SvgRenderer renderer) { // Do nothing }
public static Bitmap CenterAndScale(Bitmap source, float width, float height, SvgRenderer svgRenderer) { float totalWidth = source.Width; float totalHeight = source.Height; // Need to resize? if ((totalHeight != height || totalWidth != width)) { // Figure out the ratio float ratioX = width / totalWidth; float ratioY = height / totalHeight; // use whichever multiplier is smaller float ratio = ratioX < ratioY ? ratioX : ratioY; // Calculate x,y float posX = (width - (totalWidth * ratio)) / 2.0f; float posY = (height - (totalHeight * ratio)) / 2.0f; Bitmap baseImage = new Bitmap((int)width, (int)height); Graphics g = Graphics.FromImage(baseImage); g.Clear(Color.White); g.DrawImage(source, posX, posY, (totalWidth * ratio), (totalHeight * ratio)); return(baseImage); } return(source); }