找回密码
 立即注册

QQ登录

只需一步,快速开始

simon20130526

高级会员

12

主题

44

帖子

1190

积分

高级会员

积分
1190

活字格认证

simon20130526
高级会员   /  发表于:2013-5-28 11:52  /   查看:6455  /  回复:9
你好,请问我在网格中按1:1的比例显示出图片,总比实际的图片尺寸大,我比较了一下,在显示时将图片尺寸缩小到0.34左右,打印出来就基本上与原图大小一样,但这样做图片的清晰度就减少了,请问能否按1:1的比例显示出来并打印呢?

9 个回复

倒序浏览
山水
初级会员   /  发表于:2013-5-28 14:47:00
沙发
1楼好,
你使用的产品是Spread Win 6.0吗?
在Spread Win中,设置一个cell到ImageCellType, 将该图片设置到该ImageCellType, 并且设置该ImageCellType的Style属性到Normal, auto fit 该cell的宽、高,然后打印,打印出的就是原图1:1比例的图片。
回复 使用道具 举报
simon20130526
高级会员   /  发表于:2013-5-28 20:26:00
板凳
fpSpread1.Sheets[0].RowCount = 1;
            fpSpread1.Sheets[0].ColumnCount = 1;
            fpSpread1.Sheets[0].Rows[0].Height = 400;
            fpSpread1.Sheets[0].Columns[0].Width = 900;
            FarPoint.Win.Spread.CellType.ImageCellType imgCell = new FarPoint.Win.Spread.CellType.ImageCellType();
            imgCell.Style = FarPoint.Win.RenderStyle.Normal;
            fpSpread1.Sheets[0].Cells[0, 0].CellType = imgCell;
            
            Bitmap bmp = new Bitmap("d:\\111.jpg");
            fpSpread1.Sheets[0].Cells[0, 0].Value = bmp;

我是这样做的,图片是我在CORELDRAW画的一个矩形,长176mm,宽56mm,导出到111.jpg,然后用上面的语句放到网格中,就很大了,不知道是否我的方法不对,请指点,谢谢
回复 使用道具 举报
山水
初级会员   /  发表于:2013-5-29 10:19:00
地板
您好,
  把您的代码稍改一下就可以了:
            fpSpread1.Sheets[0].RowCount = 1;
            fpSpread1.Sheets[0].ColumnCount = 1;
            FarPoint.Win.Spread.CellType.ImageCellType imgCell = new FarPoint.Win.Spread.CellType.ImageCellType();
            imgCell.Style = FarPoint.Win.RenderStyle.Normal;
            fpSpread1.Sheets[0].Cells[0, 0].CellType = imgCell;

            Bitmap bmp = new Bitmap("e:\\Win8.png");
            fpSpread1.Sheets[0].Cells[0, 0].Value = bmp;

            float height = this.fpSpread1.ActiveSheet.Rows[0].GetPreferredHeight();
            this.fpSpread1.ActiveSheet.Rows[0].Height = height;
            float width = this.fpSpread1.ActiveSheet.Columns[0].GetPreferredWidth();
            this.fpSpread1.ActiveSheet.Columns[0].Width = width;

       改变的地方是:设置行高列宽使用了GetPreferredHeight()和GetPreferredWidth(), 这样该cell 的大小就设置成和图片一样大小了,打印出的图片也将和屏幕上看到的一样大。
       如果这样打印出的图片仍和您在CORELDRAW里的大小不一样,您可能就要查一查在转换过程中(从CORELDRAW导出到jpg)是否图片大小改变了。
      一切顺利!
回复 使用道具 举报
simon20130526
高级会员   /  发表于:2013-5-29 12:50:00
5#
你好,根据你的补充代码,图形有所改善,但还是很大,我开始也以为是CORELDRAW导出的问题,我导出后,再把图片重新导入到CORELDRAW和PHOTOSHOP中,尺寸都没有变化,还是跟原图一样,所以我才怀疑是这里显示的问题,不知道是否可以让我把我这个图片发给你试下呢,能否告诉你的邮箱呢,我传给你试试.

谢谢!
回复 使用道具 举报
山水
初级会员   /  发表于:2013-5-29 13:42:00
6#
好。
我的邮箱: sun.liu@grapecity.com.
也请告诉我您使用的Spread版本(Spread Win 6? Spread Win 7?).
目前打印出的图片和Spread在屏幕上显示出来的一样大吗?
回复 使用道具 举报
simon20130526
高级会员   /  发表于:2013-5-29 15:28:00
7#
你好,图片已发到你的邮箱里,
我用的版本是spred v25 for .net
目前打印出来的大小与屏幕显示是一样的
回复 使用道具 举报
山水
初级会员   /  发表于:2013-5-29 18:50:00
8#
您好,
试试一下代码,看能不能解决您的问题:
            fpSpread1.Sheets[0].RowCount = 1;
            fpSpread1.Sheets[0].ColumnCount = 1;
            FarPoint.Win.Spread.CellType.ImageCellType imgCell = new FarPoint.Win.Spread.CellType.ImageCellType();
            imgCell.Style = FarPoint.Win.RenderStyle.StretchAndScale;
            fpSpread1.Sheets[0].Cells[0, 0].CellType = imgCell;
            Bitmap bmp = new Bitmap("d:\\111.jpg");
            fpSpread1.Sheets[0].Cells[0, 0].Value = bmp;

            FarPoint.Win.Spread.PrintInfo printset = new FarPoint.Win.Spread.PrintInfo();
            printset.BestFitCols = true;
            printset.BestFitRows = true;

            //printset.Preview = true;
            fpSpread1.Sheets[0].PrintInfo = printset;
            fpSpread1.PrintSheet(0);
Spread在打印图片方面没有专业的图像工具强大,以上代码是一个work around方法。
回复 使用道具 举报
simon20130526
高级会员   /  发表于:2013-5-30 12:23:00
9#
你好,以上方法基本上是可以打印出1:1的图形了,不过不太实用,因为一个报表一般是有图形并且也有表格数据的。只好打印出一个大概的图形了。

不过还是要感谢你,谢谢!
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-5-30 18:29:00
10#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部