internal byte[] SaveChartAsBytes(UserControl barchart) { double width = barchart.Width; double height = barchart.Height; byte[] rval = null; Viewbox viewbox = new Viewbox(); viewbox.Child = barchart; viewbox.Measure(Size.Empty); viewbox.Measure(new System.Windows.Size(width, height)); viewbox.Arrange(new Rect(0, 0, width, height)); viewbox.UpdateLayout(); using (MemoryStream ms = new MemoryStream()) { RenderTargetBitmap render = new RenderTargetBitmap((int)width, (int)height, 1 / 300, 1 / 300, PixelFormats.Pbgra32); render.Render(viewbox); PngBitmapEncoder png = new PngBitmapEncoder(); png.Frames.Add(BitmapFrame.Create(render)); png.Save(ms); ms.Seek(0, SeekOrigin.Begin); rval = ms.ToArray(); ms.Close(); viewbox.Child = null; } return(rval); }
private static void RenderAppIconBitmap() { var grid = (Grid)Application.Current.FindResource("PhxLogoGrid"); if (grid == null) { throw new ArgumentException("Failed to find logo Grid", "PhxLogoGrid"); } var viewbox = new Viewbox(); viewbox.Child = grid; viewbox.Measure(new Size(512, 512)); viewbox.Arrange(new Rect(0, 0, 512, 512)); viewbox.UpdateLayout(); var viewbox_ps = PresentationSource.FromVisual(viewbox); double dpiX = 96.0, dpiY = 96.0; if (viewbox_ps != null) { dpiX *= viewbox_ps.CompositionTarget.TransformToDevice.M11; dpiY *= viewbox_ps.CompositionTarget.TransformToDevice.M22; } gAppIconBitmap = new RenderTargetBitmap((int)viewbox.ActualWidth, (int)viewbox.ActualHeight, dpiX, dpiY, PixelFormats.Pbgra32); gAppIconBitmap.Render(viewbox); }
public static BitmapSource Render(Geometry geometry, Brush brush, Gdip.Size originalSize, Gdip.Size size) { Path path = new Path { Data = geometry, Fill = brush, Width = originalSize.Width, Height = originalSize.Height, }; Viewbox vbox = new Viewbox { Width = size.Width, Height = size.Height, Child = path, }; vbox.Measure(new Size(size.Width, size.Height)); vbox.Arrange(new Rect(0.0, 0.0, size.Width, size.Height)); RenderTargetBitmap bitmap = new RenderTargetBitmap(size.Width, size.Height, 96, 96, PixelFormats.Pbgra32); bitmap.Render(vbox); return(bitmap); }
private static Brush SelectedBrush(string value, bool selected = false) { TextBlock textBlock; if (selected) { textBlock = new TextBlock() { Text = value, Background = new SolidColorBrush(Colors.GreenYellow) } } ; else { textBlock = new TextBlock() { Text = value, Background = Brushes.Transparent } }; Size size = new Size(40, 40); Viewbox viewBox = new Viewbox(); viewBox.Child = textBlock; viewBox.Measure(size); viewBox.Arrange(new Rect(size)); RenderTargetBitmap bitmap = new RenderTargetBitmap(35, 40, 80, 80, PixelFormats.Pbgra32); bitmap.Render(viewBox); return(new ImageBrush(bitmap)); }
private void BuildPngOnClick(object sender, RoutedEventArgs e) { var myChart = new LiveCharts.Uwp.CartesianChart { DisableAnimations = true, Width = 600, Height = 200, Series = new SeriesCollection { new LineSeries { Values = new ChartValues <double> { 1, 6, 7, 2, 9, 3, 6, 5 } } } }; var viewbox = new Viewbox(); viewbox.Child = myChart; viewbox.Measure(myChart.RenderSize); viewbox.Arrange(new Rect(new Point(0, 0), myChart.RenderSize)); myChart.Update(true, true); //force chart redraw viewbox.UpdateLayout(); //SaveToPng(myChart, "chart.png"); //png file was created at the root directory. }
/// <summary> /// 基本的な設定を利用して <see cref="FrameworkElement"/> の <see cref="FixedDocument"/> を作成します。 /// </summary> /// <param name="v">ドキュメントに変換する要素のコレクション。</param> /// <param name="stretch">ドキュメントの伸縮。</param> public void UpdateTemplateDocuments(IEnumerable <FrameworkElement> v, Stretch stretch) { var fixedDocument = new FixedDocument(); foreach (var sv in v) { var page = CreatePage(); var size = page.PrintableSize; // 印刷データ var viewbox = new Viewbox { Width = size.Width, Height = size.Height, Stretch = stretch, }; viewbox.Child = sv; viewbox.Arrange(new Rect(new Point(0, 0), size)); viewbox.Measure(size); viewbox.UpdateLayout(); page.FinalizePage(viewbox); fixedDocument.Pages.Add(page.PageContent); } Document = fixedDocument; }
public void SelfUpdateDocument(SampleOption option) { var page = CreatePage(); var size = page.PrintableSize; var viewbox = new Viewbox { Width = size.Width, Height = size.Height, Stretch = System.Windows.Media.Stretch.Uniform, // 縦横比を維持してサイズの最終調整 }; var v = new SamplePage(); var vm = option; viewbox.Child = v; v.DataContext = vm; viewbox.Arrange(new Rect(new Point(0, 0), size)); viewbox.Measure(size); viewbox.UpdateLayout(); page.FinalizePage(viewbox); // ドキュメントの作成 var fixedDocument = new FixedDocument(); fixedDocument.Pages.Add(page.PageContent); Document = fixedDocument; }
public static Viewbox makeImgFromControl(UIElement control, string count, int typ) { Viewbox viewbox; int xAxis = 0; Ellipse e = new Ellipse(); if (count.Length == 1) { xAxis = 147; } else if (count.Length == 2) { xAxis = 143; } else if (count.Length == 3) { xAxis = 141; } else if (count.Length == 4) { xAxis = 138; } viewbox = new Viewbox(); Grid grd = new Grid(); var parent = VisualTreeHelper.GetParent(control) as StackPanel; if (parent != null) { parent.Children.Remove(control); } grd.Children.Add(control); grd.Children.Add(CreateAnEllipse()); TextBlock txt = new TextBlock { Margin = new Thickness(xAxis, 168, 0, 0) }; // if(typ==0) // { // App.RunsetBFTextbox = txt; // } //else if(typ==1) // { // App.RunsetActivityTextbox = txt; // } // else // { // App.RunsetActionTextbox = txt; // } txt.Text = count.ToString(); grd.Children.Add(txt); viewbox.Child = grd; viewbox.Measure(new System.Windows.Size(400, 200)); viewbox.Arrange(new Rect(0, 0, 400, 200)); viewbox.UpdateLayout(); return(viewbox); }
public static void UpdateSize(FrameworkElement element, double availableWidth) { var vbox = new Viewbox { Child = element }; vbox.Measure(new Size(availableWidth, 2000)); vbox.Arrange(new Rect(0, 0, availableWidth, 2000)); vbox.UpdateLayout(); }
public void TakeTheChart() { var viewbox = new Viewbox(); viewbox.Child = chart; viewbox.Measure(chart.RenderSize); viewbox.Arrange(new Rect(new Point(0, 0), chart.RenderSize)); chart.Update(true, true); viewbox.UpdateLayout(); SaveToPng(chart, chart.Tag.ToString()); }
private double GethDocumentHeight(Viewbox viewbox, CommentRichTextBox RichTextBox) { viewbox.Child = RichTextBox; viewbox.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity)); viewbox.Arrange(new Rect(viewbox.DesiredSize)); var size = new Size() { Height = viewbox.ActualHeight, Width = viewbox.ActualWidth }; return(size.Height); }
internal void Zoom(double percent) { if (printManagerBase.PrintPageOrientation == PrintOrientation.Portrait) { PartViewbox.Height = percent * zoomHeightDelta; PartViewbox.Width = percent * zoomWidthDelta; //WPF-33625 Measure is called to recalculate the the page size based upon the Zoom value. #if WPF PartViewbox.Measure(new Size((percent * zoomHeightDelta), (percent * zoomWidthDelta))); #endif } else { PartViewbox.Height = percent * zoomWidthDelta; PartViewbox.Width = percent * zoomHeightDelta; //WPF-33625 Measure is called to recalculate the the page size based upon the Zoom value. #if WPF PartViewbox.Measure(new Size((percent * zoomWidthDelta), (percent * zoomHeightDelta))); #endif } }
public void Viewbox_Should_Return_Correct_SizeAndScale_StretchDirection_DownOnly( double childWidth, double childHeight, double viewboxWidth, double viewboxHeight, double expectedWidth, double expectedHeight, double expectedScale) { var target = new Viewbox { Child = new Control { Width = childWidth, Height = childHeight }, StretchDirection = StretchDirection.DownOnly }; target.Measure(new Size(viewboxWidth, viewboxHeight)); target.Arrange(new Rect(default, target.DesiredSize));
protected override Size MeasureOverride(Size availableSize) { Size mAvailableSize = availableSize; Button btn = (Button)this.FindName("btn"); btn.Measure(availableSize); mAvailableSize.Height -= btn.DesiredSize.Height; Viewbox vbox = (Viewbox)this.FindName("vbx"); vbox.Measure(new Size(availableSize.Width, availableSize.Height - btn.DesiredSize.Height)); return(availableSize); }
public static void Print(FrameworkElement Element) { var dlg = new PrintDialog(); dlg.PrintTicket.PageOrientation = System.Printing.PageOrientation.Portrait; /*var result = dlg.ShowDialog(); * if (result == null || !(bool)result) * return;*/ var page = new Viewbox { Child = Element }; page.Measure(new Size(dlg.PrintableAreaWidth, dlg.PrintableAreaHeight)); page.Arrange(new Rect(new Point(0, 0), page.DesiredSize)); dlg.PrintVisual(page, "Печать визиток"); }
private static void RenderToLMap(Image li, string file) { Viewbox viewbox = new Viewbox { Child = li }; viewbox.Measure(new Size(li.Width, li.Height)); viewbox.Arrange(new Rect(0, 0, li.Width, li.Height)); viewbox.UpdateLayout(); RenderTargetBitmap rtb = new RenderTargetBitmap((int)li.Width, (int)li.Height, 96, 96, PixelFormats.Pbgra32); rtb.Render(viewbox); PngBitmapEncoder enc = new PngBitmapEncoder(); enc.Frames.Add(BitmapFrame.Create(rtb)); using (FileStream stm = File.Create(file)) { enc.Save(stm); } }
public System.Drawing.Bitmap ApplyShader(System.Drawing.Bitmap Source) { System.Drawing.Bitmap returnBitmap = null; try { returnBitmap = Source; img.BeginInit(); img.Width = Source.Width; img.Height = Source.Height; img.Source = BitmapToBitmapSource.ToBitmapSource(Source);; img.EndInit(); viewbox.Measure(new Size(img.Width * scale, img.Height * scale)); viewbox.Arrange(new Rect(0, 0, img.Width * scale, img.Height * scale)); viewbox.UpdateLayout(); MemoryStream outStream = new MemoryStream(); RenderOptions.SetBitmapScalingMode(img, BitmapScalingMode.HighQuality); RenderTargetBitmap rtBitmap = new RenderTargetBitmap(Convert.ToInt32(img.Width * scale), Convert.ToInt32(img.Height * scale), Convert.ToInt32(WPF_DPI_X), Convert.ToInt32(WPF_DPI_Y), PixelFormats.Pbgra32); rtBitmap.Render(viewbox); BitmapFrame frame = BitmapFrame.Create(rtBitmap); encoder = new JpegBitmapEncoder(); encoder.Frames.Add(frame); encoder.Save(outStream); returnBitmap = new System.Drawing.Bitmap(outStream); encoder = null; rtBitmap = null; frame = null; } catch (Exception ex) { returnBitmap = null; } return(returnBitmap); }
public void Viewbox_Stretch_Uniform_Child_With_Unrestricted_Width() { var target = new Viewbox() { Child = new Rectangle() { Width = 100, Height = 50 } }; target.Measure(new Size(double.PositiveInfinity, 200)); target.Arrange(new Rect(new Point(0, 0), target.DesiredSize)); Assert.Equal(new Size(400, 200), target.DesiredSize); var scaleTransform = target.Child.RenderTransform as ScaleTransform; Assert.NotNull(scaleTransform); Assert.Equal(4.0, scaleTransform.ScaleX); Assert.Equal(4.0, scaleTransform.ScaleY); }
public void Viewbox_Stretch_Uniform_Child() { var target = new Viewbox() { Child = new Rectangle() { Width = 100, Height = 50 } }; target.Measure(new Size(200, 200)); target.Arrange(new Rect(new Point(0, 0), target.DesiredSize)); Assert.Equal(new Size(200, 100), target.DesiredSize); var scaleTransform = target.Child.RenderTransform as ScaleTransform; Assert.NotNull(scaleTransform); Assert.Equal(2.0, scaleTransform.ScaleX); Assert.Equal(2.0, scaleTransform.ScaleY); }
public static ImageSource Render(int width, int height, VectorGraphicsInfo vectorGraphicsInfo) { DpiScale dpiInfo = VisualTreeHelper.GetDpi(App.Current.MainWindow); PixelFormat pixelFormat = PixelFormats.Pbgra32; var x = new RenderTargetBitmap(width, height, dpiInfo.PixelsPerInchX / dpiInfo.DpiScaleX, dpiInfo.PixelsPerInchY / dpiInfo.DpiScaleY, pixelFormat); var canvas = new Canvas { Width = vectorGraphicsInfo.Viewbox.Width, Height = vectorGraphicsInfo.Viewbox.Height, SnapsToDevicePixels = false, UseLayoutRounding = true }; foreach (Path path in vectorGraphicsInfo.Paths) { canvas.Children.Add(path); } var viewbox = new Viewbox { Stretch = Stretch.Fill, Width = width, Height = height, SnapsToDevicePixels = false, UseLayoutRounding = true, Child = canvas }; var size = new Size(width, height); viewbox.Measure(size); viewbox.Arrange(new Rect(size)); x.Render(viewbox); x.Freeze(); return(x); }
/// <summary> /// Render the frameworkElement to a BitmapSource /// </summary> /// <param name="frameworkElement">FrameworkElement</param> /// <param name="size">Size, using the bound as size by default</param> /// <param name="dpiX">Horizontal DPI settings</param> /// <param name="dpiY">Vertical DPI settings</param> /// <returns>BitmapSource</returns> public static BitmapSource ToBitmapSource(this FrameworkElement frameworkElement, Size?size = null, double dpiX = 96.0, double dpiY = 96.0) { if (frameworkElement == null) { throw new ArgumentNullException(nameof(frameworkElement)); } // Make sure we have a size if (!size.HasValue) { var bounds = VisualTreeHelper.GetDescendantBounds(frameworkElement); size = bounds != Rect.Empty ? bounds.Size : new Size(16, 16); } // Create a viewbox to render the frameworkElement in the correct size var viewbox = new Viewbox { //frameworkElement to render Child = frameworkElement }; viewbox.Measure(size.Value); viewbox.Arrange(new Rect(new Point(), size.Value)); viewbox.UpdateLayout(); var renderTargetBitmap = new RenderTargetBitmap((int)(size.Value.Width * dpiX / 96.0), (int)(size.Value.Height * dpiY / 96.0), dpiX, dpiY, PixelFormats.Pbgra32); var drawingVisual = new DrawingVisual(); using (var drawingContext = drawingVisual.RenderOpen()) { var visualBrush = new VisualBrush(viewbox); drawingContext.DrawRectangle(visualBrush, null, new Rect(new Point(), size.Value)); } renderTargetBitmap.Render(drawingVisual); // Disassociate the frameworkElement from the viewbox viewbox.RemoveChild(frameworkElement); return(renderTargetBitmap); }
public static string GenerateChart(List <string> GivenAwnsers, string chartType) { var awn = GivenAwnsers.Distinct().OrderBy(a => a).ToArray(); ChartValues <int> values = new ChartValues <int>(); foreach (var l in awn) { values.Add(GivenAwnsers.Where(x => x.Equals(l)).Count()); } Chart myChart; if (chartType == "Bar") { myChart = GenerateBar(awn, values); } else if (chartType == "Row") { myChart = GenerateRow(awn, values); } else { myChart = GeneratePie(awn, values); } var viewbox = new Viewbox(); viewbox.Child = myChart; viewbox.Measure(myChart.RenderSize); viewbox.Arrange(new Rect(new Point(0, 0), myChart.RenderSize)); myChart.Update(true, true); //force chart redraw viewbox.UpdateLayout(); var name = DateTime.Now.ToString("dd-mm-yyyy-hh-mm-ss-fff") + ".png"; SaveToPng(myChart, name); return(Location + name); }
public void Viewbox_Stretch_UniformToFill_Child() { using var app = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface); var target = new Viewbox() { Stretch = Stretch.UniformToFill, Child = new Rectangle() { Width = 100, Height = 50 } }; target.Measure(new Size(200, 200)); target.Arrange(new Rect(new Point(0, 0), target.DesiredSize)); Assert.Equal(new Size(200, 200), target.DesiredSize); Assert.True(TryGetScale(target, out Vector scale)); Assert.Equal(4.0, scale.X); Assert.Equal(4.0, scale.Y); }
public void Viewbox_Stretch_Uniform_Child_With_Unrestricted_Height() { using var app = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface); var target = new Viewbox() { Child = new Rectangle() { Width = 100, Height = 50 } }; target.Measure(new Size(200, double.PositiveInfinity)); target.Arrange(new Rect(new Point(0, 0), target.DesiredSize)); Assert.Equal(new Size(200, 100), target.DesiredSize); Assert.True(TryGetScale(target, out Vector scale)); Assert.Equal(2.0, scale.X); Assert.Equal(2.0, scale.Y); }
public void Viewbox_Stretch_Uniform_Child_With_Unrestricted_Width() { using var app = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface); var target = new Viewbox() { Child = new Rectangle() { Width = 100, Height = 50 } }; target.Measure(new Size(double.PositiveInfinity, 200)); target.Arrange(new Rect(new Point(0, 0), target.DesiredSize)); Assert.Equal(new Size(400, 200), target.DesiredSize); var scaleTransform = target.InternalTransform as ScaleTransform; Assert.NotNull(scaleTransform); Assert.Equal(4.0, scaleTransform.ScaleX); Assert.Equal(4.0, scaleTransform.ScaleY); }
private static Brush PrepareBrush(string value) { TextBlock textBlock = new TextBlock() { Text = value, Background = value == "1" ? Brushes.LawnGreen: Brushes.Yellow }; Size size = new Size(40, 40); Viewbox viewBox = new Viewbox(); viewBox.Child = textBlock; viewBox.Measure(size); viewBox.Arrange(new Rect(size)); RenderTargetBitmap bitmap = new RenderTargetBitmap(35, 40, 80, 80, PixelFormats.Pbgra32); GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); bitmap.Render(viewBox); return(new ImageBrush(bitmap)); }
private void btnReport_Click(object sender, RoutedEventArgs e) { if (grdToPrint.Visibility == Visibility.Collapsed) { MyMessageBox.Show("يجب عرض التقرير اولاً"); return; } //var uc = LoadTemplate(Path.Combine(Environment.CurrentDirectory, "VoucherReportTemplate.xaml")) as UserControl; // Create the print dialog object and set options PrintDialog pDialog = new PrintDialog(); pDialog.PageRangeSelection = PageRangeSelection.AllPages; pDialog.UserPageRangeEnabled = true; pDialog.PrintQueue = System.Printing.LocalPrintServer.GetDefaultPrintQueue(); pDialog.PrintTicket = pDialog.PrintQueue.DefaultPrintTicket; pDialog.PrintTicket.PageScalingFactor = 1; System.Printing.PrintCapabilities capabilities = null; try { capabilities = pDialog.PrintQueue.GetPrintCapabilities(pDialog.PrintTicket); } catch { capabilities = null; } sv.Content = null; Viewbox vb = new Viewbox(); vb.Child = grdToPrint; System.Windows.Size sz = new Size(760, grdToPrint.ActualHeight); vb.MinWidth = 1; vb.MinHeight = 1; vb.Measure(sz); vb.Arrange(new System.Windows.Rect(new System.Windows.Point(capabilities.PageImageableArea.OriginWidth, capabilities.PageImageableArea.OriginHeight), sz)); pDialog.PrintVisual(vb, "MyViewBox"); vb.Child = null; sv.Content = grdToPrint; }
public void Viewbox_Stretch_UniformToFill_Child() { using var app = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface); var target = new Viewbox() { Stretch = Stretch.UniformToFill, Child = new Rectangle() { Width = 100, Height = 50 } }; target.Measure(new Size(200, 200)); target.Arrange(new Rect(new Point(0, 0), target.DesiredSize)); Assert.Equal(new Size(200, 200), target.DesiredSize); var scaleTransform = target.Child.RenderTransform as ScaleTransform; Assert.NotNull(scaleTransform); Assert.Equal(4.0, scaleTransform.ScaleX); Assert.Equal(4.0, scaleTransform.ScaleY); }
private void MergeTiles(FileInfo targetFile, XkcdTile topLeftTile, XkcdTile topRightTile, XkcdTile bottomLeftTile, XkcdTile bottomRightTile) { if (topLeftTile != null || topRightTile != null || bottomLeftTile != null || bottomRightTile != null) { Func <XkcdTile, Image> TileToImage = tile => new Image { Source = XkcdTile.ToImageSource(tile) }; var grid = new UniformGrid { Rows = 2, Columns = 2 }; grid.Children.Add(TileToImage(topLeftTile)); grid.Children.Add(TileToImage(topRightTile)); grid.Children.Add(TileToImage(bottomLeftTile)); grid.Children.Add(TileToImage(bottomRightTile)); var viewBox = new Viewbox(); viewBox.Child = grid; viewBox.Measure(new System.Windows.Size(XkcdTile.Width, XkcdTile.Height)); viewBox.Arrange(new Rect(new System.Windows.Size(XkcdTile.Width, XkcdTile.Height))); var renderTarget = new RenderTargetBitmap(XkcdTile.Width, XkcdTile.Height, 96, 96, PixelFormats.Default); renderTarget.Render(viewBox); var frame = BitmapFrame.Create(renderTarget); var encoder = new PngBitmapEncoder { Frames = new[] { frame } }; using (var fileStream = targetFile.Create()) { encoder.Save(fileStream); } } }
/// <summary> /// Render a Visual to a render target of a fixed size. The visual is /// scaled uniformly to fit inside the specified size. /// </summary> /// <param name="visual"></param> /// <param name="height"></param> /// <param name="width"></param> /// <returns></returns> private static RenderTargetBitmap RenderVisual(Visual visual, double height, double width) { // Default dpi settings const double dpiX = 96; const double dpiY = 96; // We can only render UIElements...ContentPrensenter to // the rescue! var presenter = new ContentPresenter { Content = visual }; // Ensure the final visual is of the known size by creating a viewbox // and adding the visual as its child. var viewbox = new Viewbox { MaxWidth = width, MaxHeight = height, Stretch = Stretch.Uniform, Child = presenter }; // Force the viewbox to re-size otherwise we wont see anything. var sFinal = new Size(viewbox.MaxWidth, viewbox.MaxHeight); viewbox.Measure(sFinal); viewbox.Arrange(new Rect(sFinal)); viewbox.UpdateLayout(); // Render the final visual to a render target var renderTarget = new RenderTargetBitmap( (int)width, (int)height, dpiX, dpiY, PixelFormats.Pbgra32); renderTarget.Render(viewbox); // Return the render taget with the visual rendered on it. return(renderTarget); }