2012-12-16 69 views
6
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 がサンプルがあります:元のサイズで画像を描画が私はPdfSharpを使用していますが、どこにBeginBoxクラスが見つからないのですか?

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); 
} 

私はここで何をしないのですか?

答えて

11

BeginBoxおよびEndBoxは、bottom of the sample pageで定義されるヘルパー方法である。

これらの方法は、周囲のボックスを作成することのみであり、実際に必要な機能(この場合は元のサイズで画像を描画する)を達成するために必要なものではないことに注意してください。だから私はちょうどコードからそれらの2行を削除します。

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); 
} 
関連する問題