我在用证卡打印机在PVC卡上打印图像(数码相机拍摄的相片)时遇到以下问题:
一、相片区域全部为黑(即是一个全黑的相片),这种情况有点像随机的,但有时连续都出现。我使用TQRImage和FastReport下的TfrPictureView都出现这种问题。
二、如果将相片自动处理(如:ColorPolit----专门用于偏正数码相机的白平衡与曝光问题),则不管在屏幕上显示的对比度、亮度如何,打印出来的相片都特别偏亮。而在屏幕看起来比较亮而未经处理的相片也不会出现这种情况。
一、相片区域全部为黑(即是一个全黑的相片),这种情况有点像随机的,但有时连续都出现。我使用TQRImage和FastReport下的TfrPictureView都出现这种问题。
二、如果将相片自动处理(如:ColorPolit----专门用于偏正数码相机的白平衡与曝光问题),则不管在屏幕上显示的对比度、亮度如何,打印出来的相片都特别偏亮。而在屏幕看起来比较亮而未经处理的相片也不会出现这种情况。
解决方案 »
- 执行存储过程时出现了问题,不知如何解决
- 继承ADODataSet 如何对字段列表中的字段添加属性.
- 初学delphi请各位大哥赐教。
- 急:MIDAS 三层开发,DBNavigator1修改没有被提交,请确认提交后再刷新
- dbgrib中记录显示问题---在线
- 实际课题碰到的难题,请有兴趣的朋友帮忙解决,非常感谢。。。
- 请问在打印报表的时候怎样设置页数的打印范围!!!!!
- 请问获取SQL数据库中的表名或视图名怎样引用查询结果象数据集怎么不行?
- sql语句查询多表问题
- interface not support?!
- 如何在鼠标移上菜单时改变菜单的背景颜色?在线
- 我有一个关于idtcpserver的实时响应问题
procedure TForm1.BitBtn1Click(Sender:TObject);
begin
if printdialog1.execute then
begin
printer.begindoc;
printer.canvas.draw(0,0,image1.picture.graphic);
printer.enddoc;
end;
end;
这个使用的是打印机的分辨率,就造成打印机打出的图形很小。不过我可以利用打印机画布canvas的stretchdraw方法灵活控制。
StretchDraw方法的声明:
procedure StretchDraw(constRect:TRect;Graphic:TGraphic);
Rect代表图形输出的区域大小,TRect的类型声明;
TRect=record
case Integer of
0:(Left,Top,Right,Bottom:Integer);
1:(TopLeft,BottomRight:TPoint);主要代码如下:
procedure TForm1.Button1Click(Sender:TObject);
var
//定义打印输出矩形框的大小
strect:Trect;
temhi,temwd:integer;
begin
if printdialog1.execute then
begin
temhi:=image1.picture.height;
temwd:=image1.picture.width;
//将图形放大到打印页面的1/2
while (temhi<printer.pageheight div 2)and(temwd<printer.pagewidth div 2) do
begin
temhi:=temhi+temhi;
temwd:=temwd+temwd;
end;
//定义图形在页面上的中心位置输出
with strect do
begin
left:=(printer.pagewidth-temwd) div 2;
top:=(printer.pageheight-temhi) div 2;
right:=left+temwd;
bottom:=top+temhi;
end;
with printer do
begin
//将放大的图形向打印机输出
begindoc;
canvas.stretchdraw(strect,image1.picture.graphic);
enddoc;
end;
end;
end;
procedure TForm1.BitBtn1Click(Sender:TObject);
begin
if printdialog1.execute then
begin
printer.begindoc;
printer.canvas.draw(0,0,image1.picture.graphic);
printer.enddoc;
end;
end;
这个使用的是打印机的分辨率,就造成打印机打出的图形很小。不过我可以利用打印机画布canvas的stretchdraw方法灵活控制。
StretchDraw方法的声明:
procedure StretchDraw(constRect:TRect;Graphic:TGraphic);
Rect代表图形输出的区域大小,TRect的类型声明;
TRect=record
case Integer of
0:(Left,Top,Right,Bottom:Integer);
1:(TopLeft,BottomRight:TPoint);主要代码如下:
procedure TForm1.Button1Click(Sender:TObject);
var
//定义打印输出矩形框的大小
strect:Trect;
temhi,temwd:integer;
begin
if printdialog1.execute then
begin
temhi:=image1.picture.height;
temwd:=image1.picture.width;
//将图形放大到打印页面的1/2
while (temhi<printer.pageheight div 2)and(temwd<printer.pagewidth div 2) do
begin
temhi:=temhi+temhi;
temwd:=temwd+temwd;
end;
//定义图形在页面上的中心位置输出
with strect do
begin
left:=(printer.pagewidth-temwd) div 2;
top:=(printer.pageheight-temhi) div 2;
right:=left+temwd;
bottom:=top+temhi;
end;
with printer do
begin
//将放大的图形向打印机输出
begindoc;
canvas.stretchdraw(strect,image1.picture.graphic);
enddoc;
end;
end;
end;
注:将printers加入到Interface和Implementation的Uses语句中。
现在离交货时间越来越近了,有兄弟遇到类似问题吗?