ABCpdf.NET中Rect,Bottom,Height的关系

因为项目需要新功能,要在一个图片的上下加上固定高度的白边如下图。项目中一直使用ABCpdf.NET处理图片,但我一直没有做这方面的功能,所以找来API参考做。

7-31-2014 4-32-20 PM

这个简单需求做的过程中出现了一些曲折,主要是ABCpdf.NET的坐标体系和想象中的不一样。

它坐标系不同于Windows所用的左上为原点的坐标系, 它是采用左下为坐标原点的(可以通过设置Doc的TopDown为true来改变原点的位置)。Doc.Rect属性很重要, 如果要输出什么对象的话, 都是输出到Rect所指定的矩形范围内,Rect的值在操作过程中不断被覆盖更新,但是之前加入的对象的位置不受影响。

对于我需要加入对象的位置主要受以下属性影响Rect,Bottom,Height

            Doc theDoc = new Doc(); //
            XImage theImg = new XImage();
            theImg.SetFile("MBC140448XX-HF02-0101bl.tif");

            theDoc.Rect.Left = 0;
            theDoc.Rect.Bottom = 27; // 
            theDoc.Rect.Width = theImg.Width; //
            theDoc.Rect.Height = theImg.Height;//
            theDoc.AddImageObject(theImg, false);

            theDoc.Rect.Height = theImg.Height + 27; //
            theDoc.Rect.Left = 0;
            theDoc.Rect.Bottom = 0; //

            theDoc.Rendering.Save("out.tif");
            theDoc.Clear();

以上代码后面注释的值都是本行语句执行后的结果。通过以上结果分析,总结得到下面规律。本段代码主要是对Y方向的操作,所以主要考虑Rect = {X, Y, W, H}的Rect.H,Bottom,Height.

Rect.H = Bottom+Height

  • theDoc.Rect.Bottom = 27  Bottom变化,Rect.Y随之变化,Rect.H没有变化,但是Height变了(Height=792-27=765,原始默认值792).所以,Bottom变,Rect.H不变,Height变
  • theDoc.Rect.Height = theImg.Height;              Height变化,Rect.H随之变化,Rect.H = Bottom + Height=27+750=777. 所以,Bottom不变,Height变,Rect.H随之变化

没有查看源码,根据结果总结以上结论,对我当前的需求是使用的。

转载于:https://www.cnblogs.com/yydaddy/p/3889489.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值