ABCpdf.NET中Rect,Bottom,Height的关系
因为项目需要新功能,要在一个图片的上下加上固定高度的白边如下图。项目中一直使用ABCpdf.NET处理图片,但我一直没有做这方面的功能,所以找来API参考做。
这个简单需求做的过程中出现了一些曲折,主要是ABCpdf.NET的坐标体系和想象中的不一样。
它坐标系不同于Windows所用的左上为原点的坐标系, 它是采用左下为坐标原点的(可以通过设置Doc的TopDown为true来改变原点的位置)。Doc.Rect属性很重要, 如果要输出什么对象的话, 都是输出到Rect所指定的矩形范围内,Rect的值在操作过程中不断被覆盖更新,但是之前加入的对象的位置不受影响。
对于我需要加入对象的位置主要受以下属性影响Rect,Bottom,Height
Doc theDoc = new Doc(); //theDoc.Rect= "0 0 612 792" theDoc.Rect.Height = 792.0
XImage theImg = new XImage();
theImg.SetFile("MBC140448XX-HF02-0101bl.tif"); theDoc.Rect.Left = 0;
theDoc.Rect.Bottom = 27; // theDoc.Rect = "0 27 612 792" theDoc.Rect.Height=765
theDoc.Rect.Width = theImg.Width; //theImg.Width = 1200 theDoc.Rect = "0 27 1200 792" theDoc.Rect.Height=765
theDoc.Rect.Height = theImg.Height;//theImg.Height = 1200 theDoc.Rect = "0 27 1200 777" theDoc.Rect.Height=750
theDoc.AddImageObject(theImg, false); theDoc.Rect.Height = theImg.Height + 27; //theDoc.Rect= "0 27 1200 804" theDoc.Rect.Height = 777.0
theDoc.Rect.Left = 0;
theDoc.Rect.Bottom = 0; //theDoc.Rect= "0 0 1200 804" theDoc.Rect.Height = 804.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随之变化
没有查看源码,根据结果总结以上结论,对我当前的需求是使用的。
ABCpdf.NET中Rect,Bottom,Height的关系的更多相关文章
- css中的width,height,属性与盒模型的关系
这段话很容易记住盒模型: css中盒子模型包含属性margin.border.padding.content,他们可以把它转移到我们日常生活中的盒子(箱 子)上来理解,日常生活中所见的盒子也具有这些属 ...
- CSS中width和height与盒子模型的关系
盒子模型 css中盒子模型包含属性margin.border.padding.width与height,他们可以把它转移到我们日常生活中的盒子(箱子)上来理解,日常生活中所见的盒子也具有这些属性,所以 ...
- Python类中super()和__init__()的关系
Python类中super()和__init__()的关系 1.单继承时super()和__init__()实现的功能是类似的 class Base(object): def __init__(sel ...
- 转iOS中delegate、protocol的关系
iOS中delegate.protocol的关系 分类: iOS Development2014-02-12 10:47 277人阅读 评论(0) 收藏 举报 delegateiosprocotolc ...
- java中接口与多重继承的关系
在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力.abstract class和int ...
- Objective-C中release和nil的关系
(iphone/ipad)浅谈Objective-C中release和nil的关系 分类: iPhone/iPad开发技术2011-12-09 01:40 2515人阅读 评论(4) 收藏 举报 ui ...
- C/C++中数组与指针的关系探究
数组与指针 长期以来,在C/C++中,数组名和指向数组首元素的指针常量到底是以一种什么关系,一直困扰着很多人.很多地方,甚至是一些教科书中都在说,"数组名就是一个指向数组首元素的指针常量&q ...
- 计算机基础--Java中int char byte的关系
计算机基础--Java中int char byte的关系 重要:一个汉字占用2byte,Java中用char(0-65535 Unicode16)型字符来存字(直接打印输出的话是字而非数字),当然要用 ...
- 【转】从PowerDesigner概念设计模型(CDM)中的3种实体关系说起
PowerDesigner概念模型的relationship .inheritance. association 从PowerDesigner概念设计模型(CDM)中的3种实体关系说起
随机推荐
- OpenStack开启sshd
修改配置sshd的文件 1. 修改sshd配置文件 /etc/ssh/sshd_config 2. 将#PasswordAuthentication no的注释去掉,并将no改为y ...
- Java面试题之九
四十六.Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 对于这个题,只要弄清楚Math提供的三个与取整相关的方法就OK了. 1.ceil,英文含义是天花板,该 ...
- Apache启用GZIP压缩网页传输方法
一.gzip介绍 Gzip是一种流行的文件压缩算法,如今的应用十分广泛,尤其是在Linux平台.当应用Gzip压缩到一个纯文本文件时,效果是很明显的,大约能够降低70%以上的文件大小.这取决于文件里的 ...
- BZOJ 1833 ZJOI2010 count 数字计数 数位DP
题目大意:求[a,b]间全部的整数中0~9每一个数字出现了几次 令f[i]为i位数(算前导零)中每一个数出现的次数(一定是同样的,所以仅仅记录一个即可了) 有f[i]=f[i-1]*10+10^(i- ...
- SSCTF-Final-Re-Play
SSCTF-Final-Re-Play 比赛时花了一晚上搞定了,结果写脚本的时候发送的内容忘记base64加密然后异或8了,手动测试的时候当然是这样做了,写脚本的时候脑抽了.这个题只有forx做出来 ...
- 04JS高级动态添加属性和删除属性
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- Oracle 物理DG切换
在进行DATA GUARD的物理STANDBY切换前需要注意:确认主库和从库间网络连接通畅:确认没有活动的会话连接在数据库中:PRIMARY数据库处于打开的状态,STANDBY数据库处于MOUNT状态 ...
- (c#)WinForm遍历所有控件
遍历WinForm中的所有控件,只执行一次以下语句是不行的 foreach (Control ctl in this.Controls) { } 这样只能遍历到第一层控件,子控件是遍历不到的,要想遍历 ...
- C#中Json字符串的各种应用类
在程序中任何事物及信息都可以用对象进行描述和承载,除了比较流行的xml之外,还有一种简洁快速处理目标信息的形式那就是Json格式. 首先Json格式有自己固定的格式:例如person这个对象就可以简单 ...
- Java多线程相关知识
1)wait() notify() sleep() sleep是Thread类的函数,wait和notify是Object的函数. sleep的时候keep对象锁,wait的时候release 对 ...