首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PDFTron (PdfNet)绘制矩形注释

用PDFTron (PdfNet)绘制矩形注释
EN

Stack Overflow用户
提问于 2016-06-28 10:32:46
回答 1查看 707关注 0票数 0

我试图让用户在pdf中创建一个矩形。用户可以在屏幕上拖动一个矩形。

在mouseup事件上,将创建一个Rect对象并将其传递给方法AddRectAnnotationToPage( rect)。

问题是矩形注释与用户拖动的rect不同。当用户单击或滚动时,注释矩形将获得正确的大小(等于作为参数传递的拖放的rect )。

为什么它不马上取正确的尺寸?为什么每当我点击pdf中的随机点时,它会调整到正确的大小?

代码语言:javascript
复制
    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();
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-28 12:16:32

通过在设置顶点后调用刷新()来修正

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38073771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档