100高分求解菜鸟问题,千万别错过
在Image1中插入一个BMP图象文件,打印完成后,发现除了应打出的内容外,同时还打印出背景点阵,怎么会有背景点阵呢?请指教,谢谢! 问题点数:100、回复次数:20Top
1 楼drunkboy(醉犯)回复于 2004-08-01 17:22:03 得分 0
看不懂你问什么?Top
2 楼sammei(sammei)回复于 2004-08-01 17:38:39 得分 0
就是打印Image中的图片时,还打印出了背景----由许多小点组成的和图片一样大小的点阵,请指教,谢谢Top
3 楼sammei(sammei)回复于 2004-08-01 17:41:44 得分 0
而我的图片中没有这样的点阵背景Top
4 楼flayyao(姚俊)回复于 2004-08-01 18:43:07 得分 0
你可以把你的图片转化为gif的,这样才没有点陈,不然都会有点陈,delphi自己没有支持gif格式的文件,你可以在网上随便下一个.Top
5 楼cybercake(数字蛋糕)回复于 2004-08-01 23:34:41 得分 50
肯定跟你的打印代码有关。如果你用的是控件,肯定是那个东西有错……
我自己写完全的打印代码很长时间了,从来没有出过问题。Top
6 楼sammei(sammei)回复于 2004-08-02 17:40:28 得分 0
谢谢:flayyao(姚俊)
cybercake(数字蛋糕)
我想应该和代码没有多大关系,如果用cavas将画出的内容直接输出到打印机,能正常打印;但是如果直接调用已画好的bmp文件到Image上,然后再打印时,就会出现这个毛病.
部份代码:
printer.Canvas.StretchDraw(r1,Img.Picture.Graphic);
delphi不支持gif格式的文件,即使把图片转化为gif,又怎么办
Top
7 楼getit911(Windows转Linux中)回复于 2004-08-02 21:41:14 得分 0
图片有问题。
picshow、graphicex组件几乎支持所有的图形文件格式Top
8 楼sammei(sammei)回复于 2004-08-02 21:53:41 得分 0
但是我用windows自带的画图程序打开或用Acdsee等看图软件打开,图象都是正常的,没有点阵,但打印出来就有问题使用的命令是:
printer.Canvas.StretchDraw(r1,Img.Picture.Graphic);Top
9 楼sammei(sammei)回复于 2004-08-03 18:05:26 得分 0
谁帮帮我Top
10 楼ghchen()回复于 2004-08-04 09:07:21 得分 0
没有遇到过,顶Top
11 楼zhuangjunx(星晨)回复于 2004-08-04 09:50:20 得分 0
upTop
12 楼redseaw()回复于 2004-08-04 09:58:32 得分 0
upTop
13 楼GoldShield(李柏岑)回复于 2004-08-04 10:43:29 得分 0
不用CANVAS直接用一个IMAGE控件
先把你的图片存成文件放一个临时文件夹中.打印报表的时候再把它调出来.
从来没见过你说的这种情况.应该是你的代码那儿有问题.Top
14 楼sammei(sammei)回复于 2004-08-04 15:08:08 得分 0
我是在Image控件中用Canvas画出表格,然后保存为BMP文件,打印时再把BMP文件调出来,下面是部份代码:
var PrnPreivew:TImage;
R1:TRect;
PrnPreview:=TImage.Create(self);
PrnPreview.Picture.SaveToFile('c:\aa.bmp');
PrnPreview.Picture.LoadFromFile('c:\aa.bmp');
Printer.Canvas.StretchDraw(R1,PrnPreview.Picture.Graphic);
能告诉我你的原代码吗?谢谢Top
15 楼sammei(sammei)回复于 2004-08-05 16:49:02 得分 0
自已顶Top
16 楼cybercake(数字蛋糕)回复于 2004-08-05 18:15:28 得分 50
不要用TImage,换成TBitmap试试?因为TImage可能会包含有Delphi设计时的信息,所以可能会把Form中的一些设计网格打进去,而TBitmap只是不可见的对象,所以没有这个担心。
var PrnPreivew: TBitmap;
R1: TRect;
PrnPreview:=Bitmap.Create;
PrnPreview.Picture.LoadFromFile('c:\aa.bmp');
Printer.Canvas.StretchDraw(R1,PrnPreview);
此外会不会是你的打印机出了问题?换一台试试。Top
17 楼hr168(Ocb.Hr)回复于 2004-08-05 18:33:10 得分 0
这个原因是和你的打印机的分辨率和屏幕不一样导致的,你必须进行转化
你可以使用self.PixelsPerInch得到屏幕的分辨率,即每INCH的像素数,然后你转化为每毫米的像素数,除以25.4这个数字是INCH和MM的转化率
(self.PixelsPerInch/25.4) 用这个数字,分别去*rl的四个值Top
18 楼sammei(sammei)回复于 2004-08-06 09:27:27 得分 0
我用round(self.PixelsPerInch/25.4)这个数字分别去*R1的四个值后,点阵仍然有,只是文字表格内容变得更大,R1的四个值应怎样设置:
我的图片在屏幕上的宽是:750,高是:500
能否给我你打印图片的具体代码,非常感谢!Top
19 楼yq3woaini(哈哈镜 选择好心情)回复于 2004-08-19 00:02:52 得分 0
jjjjjjjjjjjjjjjTop
20 楼sammei(sammei)回复于 2004-08-19 11:29:14 得分 0
帮帮忙Top




