现在的情况是在用Qreport或FastReport的打印图片的时候,如果图片超过200DPI(以下没试),如果按1:1打印的话,在设计或打印时总是自己放大..如:我现在有个图片是5.26*17.71的,比A4小,但在打印或设计的时候如果按1:1的方式打印的话,就会超出设计用的A4界面..不知道为什么...我是刚注册的,没有什么分给,但我希望有哪位高手指点一下..(如果缩小成96DPI就没有问题了.但打印效果就不好了..)

解决方案 »

  1.   

    对了.图片在word,excel中显示的都很正常...都比A4小..这好象不能发图片..如果图片小点的话就不会出现这样的问题..就100分求教了..
      

  2.   

    这个应该是打印机的DPI设置问题,默认是72,你把200DPI的放进去自然就大了很多
    你要用DEVMODE结构重新定义打印机的DPI为200或更大
    或者将图片尺寸动态缩小
      

  3.   

    单位不一样,DPI简单可以解释为单位英寸区域需要的像素数量,相当于像素<-->厘米的转换常量
    windows使用像素为单位,默认为72DPI,换算成A4纸大小差不多就是595*842像素
    这样你的图片对windows画布来说就太大了
      

  4.   

    FastReport组件没用过,一般的处理办法是用API来返回打印机的HDC画布并设置DPI,然后把数据画在HDC上面
      

  5.   

    还是找不到好的方法..但现在有一点,RAVE如果是BMP的话没有问题,,但RAVE没有JPG,,,听说有个插件,,倒时候找找...为什么wrod和excel会没有这样的事情,我想会有一个比较好的解决方法的..
      

  6.   

    为什么没有人回答了呀..?道理SonicX(SonicX)说的挺明白了..,就是还没有好的解决方法,有人再指点一下吧..谢谢了..
      

  7.   

    那就把Jpg文件转换为bmp文件转换函数
    //bmp转化为JPG
    BMPToJPG(BmpFilepath,BmpFileName,SizeNameJpgFilepath,SizeCodejpgFileName,jpgFileName:string;Flag:boolean=false);
    var
      Jpeg : TJPEGImage;
      Bmp : TBitmap;
      var
       Create:boolean;
    begin
    try
      if DirectoryExists(SizeNameJpgFilepath)=false then
      begin
        if ForceDirectories(SizeNameJpgFilepath)=false then
        begin
          SizeNameJpgFilepath:=SizeCodejpgFileName;
          ForceDirectories(SizeNameJpgFilepath);
        end;
      end;
      Bmp := TBitmap.Create;
      try
        Bmp.LoadFromFile(BmpFilepath+BmpFileName);
        Jpeg := TJPEGImage.Create;
        try
          Jpeg.Assign(Bmp);
          Jpeg.Compress;
          //保存图片
          Jpeg.SaveToFile(SizeNameJpgFilepath+jpgFileName);
        finally
          Jpeg.Free;
        end;
      finally
         Bmp.Free;
      end;
    except
    end;
      if Flag=true then
        DeleteFile(BmpFilepath+BmpFileName);
    end;//JPG文件转换为BMP文件,其中省略的部分只要将bmp文件创建与操作同JPG换过来,同上面的函数
    //差不多,只是写出来的那部分不一样
    JPGToBMP(BmpFilepath,BmpFileName,SizeNameJpgFilepath,SizeCodejpgFileName,jpgFileName:string;Flag:boolean=false);
    var
      Jpeg : TJPEGImage;
      Bmp : TBitmap;
      var
       Create:boolean;
    begin
    try
      ...
      try
        ...
        try
          ....
          Bmp.Assign(Jpeg);
          Bmp.Dormant;
          Bmp.FreeImage;
          //保存图片或者绘制图片
          ....
        finally
          
        end;
      finally
         ......
      end;
    except
    end;
      .......
    end;
      

  8.   

    BMP转成JPG,JPG转成BMP有什么用呀?这样就能解决这个问题吗?
    还有rave 报表中,编辑是正常的,但打印就不正常了.用rave来做也是不行的..还是在fastreport中做手脚吧.
      

  9.   

    可能是fastreport之类的VCL用的人少吧...
      

  10.   

    这可是你自己说的:
    “但现在有一点,RAVE如果是BMP的话没有问题”
    根据你这个说法,可以让你一直用bmp文件,Jpg格式的全部转化为bmp
      

  11.   

    GDI+转换图片为标准的72DPI,那就Ok吧?