2016-06-28 6 views
0

私は、ユーザーがpdfで矩形を作成しようとしています。ユーザーは、画面上で長方形をドラッグすることができます。PDFTron(PdfNet)で四角形の注釈を描画する

mouseUpイベントに、のRectオブジェクトがメソッドに作成し、渡されAddRectAnnotationToPage(矩形RECT)

問題が矩形注釈は、ユーザがドラッグRECT異なることです。ユーザーがクリックまたはスクロールすると、注釈矩形は正しいサイズ(引数として渡されたドラッグされた矩形に等しい)を取得します

なぜ、正しいサイズになりませんか?なぜ私はpdfのランダムな場所をクリックするたびに正しいサイズにサイズ変更されますか?

private void AddRectAnnotationToPage(Rectangle rect) 
    { 
     if (rect != null) 
     { 
      if (this.m_pageNumber < 0) 
      { 
       m_pageNumber = this.GetCurrentPage(); 
      } 

      _cur_page = this.m_pageNumber; 

      if (_cur_page < 0) 
      { 
       return; 
      } 


      double width = rect.Width; 
      double height = rect.Height; 

      double startX = rect.Left; 
      double startY = rect.Bottom; 
      double endX = rect.Right; 
      double endY = rect.Top; 

      double X1 = startX; 
      double Y1 = startY; 
      double X2 = endX; 
      double Y2 = endY; 

      ConvScreenPtToPagePt(ref X1, ref Y1, this.GetCurrentPage()); 
      ConvScreenPtToPagePt(ref X2, ref Y2, this.GetCurrentPage()); 

      Rect pos = new Rect(X1,Y1,X2,X2); 
      Polygon poly = pdftron.PDF.Annots.Polygon.Create(m_PdfDocument.GetSDFDoc(), pos); 
      pdftron.PDF.Point p = new pdftron.PDF.Point(); 
      p.x = X1; p.y = Y1; 
      poly.SetVertex (0, p); 
      p.x = X1; p.y = Y2; 
      poly.SetVertex (1, p); 
      p.x = X2; p.y = Y2; 
      poly.SetVertex (2, p); 
      p.x = X2; p.y = Y1; 
      poly.SetVertex (3, p); 


      PDFDoc doc = GetDoc(); 
      doc.Lock(); 
      pdftron.PDF.Page pag = doc.GetPage(_cur_page); 

      Obj annots = pag.GetAnnots(); 
      if (annots == null) 
      { 
       // If there are no annotations, create a new annotation 
       // array for the page. 
       annots = m_PdfDocument.CreateIndirectArray(); 
       pag.GetSDFObj().Put("Annots", annots); 
      } 

      pag.AnnotPushBack(poly); 
      doc.Unlock(); 
     } 
    } 

答えて

0

頂点を設定した後Refreshappearance()を呼び出すことによって、固定

関連する問題