rdlc中,Body设置背景图片的问题。

zwaleaf 2009-07-02 11:30:42
我在Body中添加了背景图片, BackgroundRepeat设置为RepeatY(若为NoRepeat则只在第一页的Body中显示)。
如果背景图的高度与Body的高度严格相等,则每页都显示完整的相同的图片,这也是要求的效果。
但是实际上却没这么理想。

在rdlc中,度量单位是inch,而本地图片的单位是px。 (1inch = 96pixel)
比如Body的Height是7.15px. 根据Body的Height去做一个图片, 7.15×96 = 686.4 取最接近的整数为686。
Image的Height是686,
686/96 = 7.1458333.......小于7.15。图片高度比Body高度要小一点,由于设置了RepeatY属性,在显示完一张完整的图片后,在Body底部空余的部分会接着重复图片,随着页数的增加,图片错位将会显得很难看。
如果图片的高度略大于Body的高度,在Body里面没有显示完一张图片,将会在下一页接着显示,同样会出现图片错位。

请问下: 本地图片的Size可以是float型的吗?如果可以。7.15×96 = 686.4 ,那么我可以把图片做成高度为686.4px的。

本地图片我是从另外的图片切割的:
destRect = new Rectangle(0, 0, imageWidth, imageHeight);
srcRect = new Rectangle(0, 0, imageWidth, imageHeight);
Bitmap clipImage = new Bitmap(imageWidth, bodyHeight);
graphics = Graphics.FromImage(clipImage);
graphics.DrawImage(bitmap, destRect, srcRect, GraphicsUnit.Pixel);
clipImage.Save(clipImagePath, imageFormat);
貌似Bitmap的Size只能做成整型的。
不知道怎么解决才好?


Note: Body的高度: PageHeight - TopMargin - BottomMargin - PageHeaderHeight - PageFooterHeight


rdlc中部分:
<Body>
<Style>
<BackgroundImage>
<BackgroundRepeat>RepeatY</BackgroundRepeat>
<Source>External</Source>
<Value>file:D:\rdlc\bgImage\part_2.jpg</Value>
</BackgroundImage>
</Style>
</Body>
<PageHeader Name="PageHeader" BandType="PageHeader">
<Height>1.51in</Height>
<PrintOnLastPage>true</PrintOnLastPage>
<PrintOnFirstPage>true</PrintOnFirstPage>
<Style>
<BackgroundImage>
<BackgroundRepeat>NoRepeat</BackgroundRepeat>
<Source>External</Source>
<Value>file:D:\rdlc\bgImage\part_1.jpg</Value>
</BackgroundImage>
</Style>
</PageHeader>
...全文
1027 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zwaleaf 2009-07-10
  • 打赏
  • 举报
回复
谢谢你的回复.
我现在还是没有找到解决方案.
希望放下一段时间后,突然之间就可以解决了.呵呵
  • 打赏
  • 举报
回复
关于rdlc这方面尺寸和布局是有些麻烦的,耐心点调整尺寸的大小,会得到你想要的结果的,我也是经常这样子。
你的这个问题我也只能这样了,不能给出具体的解决方案
zwaleaf 2009-07-02
  • 打赏
  • 举报
回复
顶下自己的帖子,望有知道的兄弟帮下忙.
将原问题换个简单的提问方式.
如下:

rdlc中,如何在body中添加图片.图片的高度比body的高度小.
当背景图BackgroundRepeat属性为NoRepeat时,背景图只在第一页出现,为了在多页显示,得设置成RepeatY,
但问题来了,如果bodyHeight = 1.5 * imageHeght, 那么第一页显示完一张图片后,接下来显示图片的上半部分,第二页接着显示图片的下半部分,再接着显示另一张图片....

我要的效果是: 每一页都是显示完整的一张图片,有什么方法么?


<Body>
<Style>
<BackgroundImage>
<BackgroundRepeat>RepeatY</BackgroundRepeat>
<Source>External</Source>
<Value>file:D:\rdlc\bgImage\part_2.jpg</Value>
</BackgroundImage>
</Style>
</Body>

Note: Body的高度: PageHeight - TopMargin - BottomMargin - PageHeaderHeight - PageFooterHeight

4,816

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧