因为项目需要新功能,要在一个图片的上下加上固定高度的白边如下图。项目中一直使用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的关系的更多相关文章

  1. css中的width,height,属性与盒模型的关系

    这段话很容易记住盒模型: css中盒子模型包含属性margin.border.padding.content,他们可以把它转移到我们日常生活中的盒子(箱 子)上来理解,日常生活中所见的盒子也具有这些属 ...

  2. CSS中width和height与盒子模型的关系

    盒子模型 css中盒子模型包含属性margin.border.padding.width与height,他们可以把它转移到我们日常生活中的盒子(箱子)上来理解,日常生活中所见的盒子也具有这些属性,所以 ...

  3. Python类中super()和__init__()的关系

    Python类中super()和__init__()的关系 1.单继承时super()和__init__()实现的功能是类似的 class Base(object): def __init__(sel ...

  4. 转iOS中delegate、protocol的关系

    iOS中delegate.protocol的关系 分类: iOS Development2014-02-12 10:47 277人阅读 评论(0) 收藏 举报 delegateiosprocotolc ...

  5. java中接口与多重继承的关系

    在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力.abstract class和int ...

  6. Objective-C中release和nil的关系

    (iphone/ipad)浅谈Objective-C中release和nil的关系 分类: iPhone/iPad开发技术2011-12-09 01:40 2515人阅读 评论(4) 收藏 举报 ui ...

  7. C/C++中数组与指针的关系探究

    数组与指针 长期以来,在C/C++中,数组名和指向数组首元素的指针常量到底是以一种什么关系,一直困扰着很多人.很多地方,甚至是一些教科书中都在说,"数组名就是一个指向数组首元素的指针常量&q ...

  8. 计算机基础--Java中int char byte的关系

    计算机基础--Java中int char byte的关系 重要:一个汉字占用2byte,Java中用char(0-65535 Unicode16)型字符来存字(直接打印输出的话是字而非数字),当然要用 ...

  9. 【转】从PowerDesigner概念设计模型(CDM)中的3种实体关系说起

    PowerDesigner概念模型的relationship .inheritance. association 从PowerDesigner概念设计模型(CDM)中的3种实体关系说起

随机推荐

  1. [置顶] Ajax核心--XMLHttpRequest对象

    XMLHttpRequest 对象是AJAX功能的核心,学习XMLHttpRequest对象就先从创建XMLHttpRequest 对象开始,了解在不同的浏览器中创建XMLHttpRequest 对象 ...

  2. hdu 1421 搬寝室(dp)

    Problem Description 搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从27号楼搬到3号楼,因为10号要封楼了.看着寝室里的n件物品,xhd开始发呆, ...

  3. 彩虹vpn免费10分钟

    账号:rainbowvpn password:10fenzhong server地址:t.chqvpn.com l2tp密钥:123456

  4. DG之主库、备库切换(物理备库)

    DG之主库.备库切换 一.开库与关库顺序 开库顺序 先启备库,再启主库(启动监听.打开告警日志) 关库顺序 先关主库,再关备库 二.主备库切换 1.操作过程一览 步骤1:启动备库.监听.告警: 步骤2 ...

  5. Activity(三)

    常用控件 EditView.TextView.Button 设置layout,在fragment_main.xml配置控件 配置可编辑文本控件factorOne.factorTwo,显示文本控件sym ...

  6. java中的302和sendRedirect的区别

    java中有一个sendRedirect函数这个用于跳转到另外一个页面,这个实际上是一个302跳转,但是不完全等同于302跳转 点击(此处)折叠或打开 response.sendRedirect(&q ...

  7. ThInkPHP中的常量

    除了常规变量的输出外,模板引擎还支持系统变量和系统常量.以及系统特殊变量的输出.它们的输出不需要事先赋值给某个模板变量.系统变量的输出必须以$Think.打头,并且仍然可以支持使用函数.常用的系统变量 ...

  8. shell ps1 提示设置

    PS1="\[\033[01;37m\]\u\[\033[00m\]@\[\033[01;31m\]localhost \t\[\033[00m\]:\[\033[01;35m\]\w\[\ ...

  9. jupyter巨好玩-调试代码自动变文档

    有时候,我们写python程序,总是会出现各种错误,当酒过三巡,菜过五味,所有问题都解决了之后,我们就想把犯过的错误总结一下,以便日后查询.这时候问题来了,难道要一一重现一下? jupyter来了!一 ...

  10. 什么是web标准

    Web Standards Standards是个复数,就知道他是有好几个标准或者规范组成的,分别是:结构规范 XML ,XHTML;表现规范 CSS;行为规范 DOM,ECMAScript; 上面是 ...