ScaleTransform() public method

public ScaleTransform ( float sx, float sy ) : void
sx float
sy float
return void
コード例 #1
0
ファイル: PDFExporter.cs プロジェクト: xtjatswc/NClass
        // ========================================================================
        // Methods

        #region === Methods

        /// <summary>
        /// Exports the given diagram into a PDF. The PDF is saved at the location
        /// given in <see cref="fileName"/>. If selectedOnly is true, only the selected
        /// elements of the diagram get exported.
        /// </summary>
        public void Export(Graphics g)
        {
            if (MonoHelper.IsRunningOnMono)
            {
                GlobalFontSettings.FontResolver = new NClassFontResolver();
            }

            PdfDocument document    = new PdfDocument();
            PdfPage     page        = document.AddPage();
            RectangleF  diagramSize = nclassDocument.GetPrintingArea(selectedOnly);

            page.Width  = new XUnit(diagramSize.Width, XGraphicsUnit.Presentation) + new XUnit(padding.Right * 2);
            page.Height = new XUnit(diagramSize.Height, XGraphicsUnit.Presentation) + new XUnit(padding.Bottom * 2);

            XGraphics   gfx      = XGraphics.FromPdfPage(page);
            PDFGraphics graphics = new PDFGraphics(gfx);

            //Translate because of the padding.
            graphics.TranslateTransform(padding.Left, padding.Top);

            //Do some scaling to get from pixels to dots...
            Graphics gdiGraphics = g;

            graphics.ScaleTransform(72.0f / gdiGraphics.DpiX, 72.0f / gdiGraphics.DpiY);
            //Fonts are already mesured in dots but the size of them is also scaled by the above
            //transformation. So we have to applay an opposite transformation on the fonts first.
            graphics.ScaleFont = gdiGraphics.DpiY / 72.0f;
            //PDF-Sharp also does the scaling for the images itself. So we have to revert this as
            //we did it for the fonts.
            graphics.ScaleImage = gdiGraphics.DpiX / 72.0f;

            //Move everything to the top left corner
            graphics.TranslateTransform(-diagramSize.X, -diagramSize.Y);

            graphics.TakeInitialTransform();

            nclassDocument.Print(graphics, selectedOnly, Style.CurrentStyle);

            //Clean up...
            while (gfx.GraphicsStateLevel > 0)
            {
                gfx.Restore();
            }

            document.Options.CompressContentStreams = true;
            try
            {
                document.Save(fileName);
                Successful = true;
            }
            catch (IOException e)
            {
                MessageBox.Show(String.Format(Strings.Error_CoulNotWritePDF, e.Message), Strings.ErrorDialog_Title,
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
コード例 #2
0
ファイル: PDFExporter.cs プロジェクト: gbaychev/NClass
    // ========================================================================
    // Methods

    #region === Methods

    /// <summary>
    /// Exports the given diagram into a PDF. The PDF is saved at the location
    /// given in <see cref="fileName"/>. If selectedOnly is true, only the selected
    /// elements of the diagram get exported.
    /// </summary>
    public void Export()
    {
      PdfDocument document = new PdfDocument();
      PdfPage page = document.AddPage();
      RectangleF diagramSize = nclassDocument.GetPrintingArea(selectedOnly);
      page.Width = new XUnit(diagramSize.Width, XGraphicsUnit.Presentation) + new XUnit(padding.Right*2);
      page.Height = new XUnit(diagramSize.Height, XGraphicsUnit.Presentation) + new XUnit(padding.Bottom*2);

      XGraphics gfx = XGraphics.FromPdfPage(page);
      PDFGraphics graphics = new PDFGraphics(gfx);

      //Translate because of the padding.
      graphics.TranslateTransform(padding.Left, padding.Top);

      //Do some scaling to get from pixels to dots...
      Graphics gdiGraphics = (new Control()).CreateGraphics();
      graphics.ScaleTransform(72.0f/gdiGraphics.DpiX, 72.0f/gdiGraphics.DpiY);
      //Fonts are already mesured in dots but the size of them is also scaled by the above
      //transformation. So we have to applay an opposite transformation on the fonts first.
      graphics.ScaleFont = gdiGraphics.DpiY/72.0f;
      //PDF-Sharp also does the scaling for the images itself. So we have to revert this as
      //we did it for the fonts.
      graphics.ScaleImage = gdiGraphics.DpiX/72.0f;

      //Move everything to the top left corner
      graphics.TranslateTransform(-diagramSize.X, -diagramSize.Y);

      graphics.TakeInitialTransform();

      nclassDocument.Print(graphics, selectedOnly, Style.CurrentStyle);

      //Clean up...
      while(gfx.GraphicsStateLevel > 0)
      {
        gfx.Restore();
      }

      document.Options.CompressContentStreams = true;
      try
      {
        document.Save(fileName);
        Successful = true;
      }
      catch(IOException e)
      {
        MessageBox.Show(String.Format(Strings.Error_CoulNotWritePDF, e.Message), Strings.ErrorDialog_Title,
                        MessageBoxButtons.OK, MessageBoxIcon.Error);
      }
    }