使用C1PrintDocument控件 > 渲染对象 > 渲染对象的嵌套、定位和叠放规则 > 指定渲染对象的尺寸和位置 |
渲染对象的尺寸和位置由如下四个属性控制:
? X –指定对象在X坐标上的值
? Y–指定对象在Y坐标上的值
? Width-指定对象的宽度
? Height–指定对象的高度
所有这些属性的值类型都是C1.C1Preview.Unit。X和Y属性的默认值是Auto(由静态字段Unit.Auto来表示),它的意思是对象的定位方式是基于他父对象的叠放规则的(详见上一章节的叠放规则)。而渲染对象的宽度和高度的默认值则根据所属类型的不同有所区别。
下表罗列了各个渲染对象的默认尺寸,也包括用于计算自动尺寸时所用到的规则。
宽度 | 高度 | 自动大小 | |
---|---|---|---|
RenderArea RenderToc RenderReport RenderSection RenderC1Printable |
父对象宽度 | 自动 | 由显示子对象所需的的最大尺寸决定 |
RenderEmpty | 自动 | 自动 | 0 |
RenderGraphics | 自动 | 自动 | 由其内部显示的内容决定 |
RenderImage | 自动 | 自动 | 由对应的图片尺寸决定 |
RenderInputButton RenderInputCheckBox RenderInputRadioButton RenderInputComboBox RenderInputText | 自动 | 自动 | 由其内部显示的内容决定 |
RenderRichText | 父对象宽度(不支持自动宽度) | Auto (determined by the text size). | -- |
RenderLine RenderPolygon RenderEllipse RenderArc RenderPie RenderRectangle RenderRoundRectangle | 自动 | 自动 | 由形状的尺寸决定 |
RenderTable | 父对象宽度(设为自动宽度时,则为各个列的宽度总和) | 自动 | 宽度由全部列的宽度之和决定,高度则由全部行的高度之和决定 |
RenderParagraph RenderText RenderTocItem | 父对象宽度 | 自动 | 由文本的尺寸决定 |
RenderField | 父对象宽度 | 自动 | 由内容的尺寸决定 |
RenderBarCode | 自动 | 自动 | 由内容的尺寸决定 |
你可以给这些属性赋上自定义的值来覆盖他们的默认值(除了Auto,你可以给X或Y坐标属性赋上任意值,因为这样会使对象不再受叠放规则约束,详见叠放章节)。对象的尺寸和位置属性可以通过以下方式来设定(注意ro指向下文样例中的一个渲染对象)
ro.Width=Unit.Auto; ro.Height="auto";
ro.X=new Unit(8,UnitTypeEnum.Mm);
ro.Y=8; (它的单位是C1PrintDocument.DefaultUnit);
ro.Width="28mm";
ro.Height=new Unit(50,DimensionEnum.Width);
ro.Width="100%";
作为另一个对象尺寸或位置的引用。对象能够被如下各种关键词所识别
self–当前对象(默认值,可省略)
parent–对象所属的父对象;
prev前一个相邻对象; next–后一个相邻对象; page-当前页面;
column–当前的列
page<N>–指定页码的页面(注意:页面必须存在;也就是说对于尚未存在的页面的引用是不支持);
column<M>–页面上的一个列(通过数字指定)
page<N>.column<N>–指定页面上的一个指定列
<objectname>–带有指定名称的对象(Name属性的值;先从当前对象的相邻对象开始查找,然后从它的子对象内查找。)
引用对象的尺寸和位置能够根据如下关键词来识别:left,top,right, bottom,width,height(坐标是与其父对象相关的)。一些例子:
ro.Height="next.height";–将对象的高度设为其后一个相邻对象的高度; ro.Width="page1.width";–将对象的宽度设为第一页的宽度;
ro.Height="width";–将对象的高度设为与其自身的宽度相等;
ro.Y="prev.bottom";–将对象的Y坐标值设为其前一个相邻对象的距离底部的值。ro.Width="prev.width";–sets将对象的宽度设为其前一个相邻对象的宽度。
ro.Width="Max(prev.width,6cm)";–将对象的宽度设为其前一个相邻对象的宽度与6厘米相比较之后的最大值。
ro.Width="prev.width+50%prev.width";–将对象的宽度设为其前一个相邻对象宽度再加上前一个相邻对象宽度的一半。
ro.Width="150%prev";–与上例相同(当引用对象与赋值对象的单位相同时,单位可以忽略,这里指的是宽度的单位)
ro.Width="prev*1.5";–还是与上例相同,区别是用倍数代替了百分比。
除了上面这些例子中通过字符串设定尺寸和位置的方式外,还可以用Unit(string)构造函数的方式来实现,例如:
Visual Basic
Visual Basic |
拷贝代码
|
---|---|
ro.Width = New C1.C1Preview.Unit("150%prev") |
C#
C# |
拷贝代码
|
---|---|
ro.Width = new Unit("150%prev"); |
大小写并不重要,因此"prev.width","PrEv.WidTh",和"PREV.WIDTH"这些写法都是等价的。