Я использую PdfSharp и не могу найти класс BeginBox, где он?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.IO;
using System.Drawing;
using PdfSharp;
using PdfSharp.Drawing;
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;

namespace Lightnings_Extractor
{
    class PDF
    {
        public PDF()
        {
            // Create a new PDF document
            PdfDocument document = new PdfDocument();
            document.Info.Title = "Created with PDFsharp";

            // Create an empty page
            PdfPage page = document.AddPage(); 
            // Get an XGraphics object for drawing
            XGraphics gfx = XGraphics.FromPdfPage(page); 
            // Create a font
            XFont font = new XFont("Verdana", 20, XFontStyle.BoldItalic); 
            // Draw the text
            gfx.DrawString("Hello, World!", font, XBrushes.Black,
            new XRect(0, 0, page.Width, page.Height),
            XStringFormats.Center); 
            // Save the document...
            const string filename = @"d:\HelloWorld.pdf";
            document.Save(filename);
            // ...and start a viewer.
            Process.Start(filename);
        }

        private void DrawImage(XGraphics gfx, int number)
        {
        }
    }
}

Я беру образец по этой ссылке: http://www.pdfsharp.net/wiki/Graphics-sample.ashx Там есть образец: Нарисовать изображение в исходном размере

void DrawImage(XGraphics gfx, int number)
{
  BeginBox(gfx, number, "DrawImage (original)");

  XImage image = XImage.FromFile(jpegSamplePath);

  // Left position in point
  double x = (250 - image.PixelWidth * 72 / image.HorizontalResolution) / 2;
  gfx.DrawImage(image, x, 0);

  EndBox(gfx);
}

Что мне здесь не хватает?


person Daniel Lip    schedule 16.12.2012    source источник


Ответы (1)


BeginBox и EndBox – это вспомогательные методы, определенные в нижней части образца страницы.

Обратите внимание, что эти методы предназначены только для создания окружающего прямоугольника и, вероятно, не то, что вам нужно для достижения желаемой функциональности (в данном случае для рисования изображения в исходном размере). Поэтому я бы просто удалил эти две строки из кода.

public void BeginBox(XGraphics gfx, int number, string title)
{
  const int dEllipse = 15;
  XRect rect = new XRect(0, 20, 300, 200);
  if (number % 2 == 0)
    rect.X = 300 - 5;
  rect.Y = 40 + ((number - 1) / 2) * (200 - 5);
  rect.Inflate(-10, -10);
  XRect rect2 = rect;
  rect2.Offset(this.borderWidth, this.borderWidth);
  gfx.DrawRoundedRectangle(new XSolidBrush(this.shadowColor), rect2, new XSize(dEllipse + 8, dEllipse + 8));
  XLinearGradientBrush brush = new XLinearGradientBrush(rect, this.backColor, this.backColor2, XLinearGradientMode.Vertical);
  gfx.DrawRoundedRectangle(this.borderPen, brush, rect, new XSize(dEllipse, dEllipse));
  rect.Inflate(-5, -5);

  XFont font = new XFont("Verdana", 12, XFontStyle.Regular);
  gfx.DrawString(title, font, XBrushes.Navy, rect, XStringFormats.TopCenter);

  rect.Inflate(-10, -5);
  rect.Y += 20;
  rect.Height -= 20;

  this.state = gfx.Save();
  gfx.TranslateTransform(rect.X, rect.Y);
}

public void EndBox(XGraphics gfx)
{
  gfx.Restore(this.state);
}
person Mario S    schedule 16.12.2012