我用同一台打印机,在WORD打印二号字体比在我的程序里打印出来的二号字要大,什么原因影响?

解决方案 »

  1.   

    相同的字号打出来的字要比WORD的小 ?
    这可能是一个怪事了,
    我不太同意  sunssc(大虾) 的说法
    因为显示器的分辨率与打印机是有一个差别的,但这个差别比例应该是相同的,就是说,你在显示器中看到的二号字与打印机的二号字是不一样大小的,但只要相同字体的,就应该是一样大的吧
      

  2.   

    //设置打印纸的大小;
    SetPaperSize(paperx,papery);
    //开始打印
    with printer do
     begin
     begindoc;
      with canvas do
       begin
     if SetMapMode(Handle,MM_LOMETRIC) = 0 then //每一逻辑点为0.1MM,注意Y轴方向向下
     ShowMessage('Failed: SetMapMode(Handle,MM_LOMETRIC)');
    //检验字符串
    //年度“2002年—2003年”去除最后一个“年”字
    if copy(dbedit2.Text,length(Trimright(dbedit2.Text))-1,2)='年' then
        dbedit2.Text:=copy(dbedit2.Text,1,length(Trimright(dbedit2.Text))-2);
    //比赛名称去掉最后“竞赛”两个字
     if copy(dbedit3.Text,length(Trimright(dbedit3.Text))-3,4)='竞赛' then
        dbedit3.Text:=copy(dbedit3.Text,1,length(Trimright(dbedit3.Text))-4);
    //检验Dbedit3是否超出打印范围
     dbedit3fontsize:=dbedit3.Font.Size;
     dbedit3.Font.Size:=dbedit3.Font.Size+6;
     repeat     Font:=dbedit3.Font;
          if TextWidth(dbedit3.Text)>dbedit3maxlength then
          begin
          dbedit3.Font.Size:=dbedit3.Font.Size-1;
          maxlengthcheck:=false;
          end
        else
            maxlengthcheck:=true;
      until maxlengthcheck;
    //设置时间格式if ((strtoint(dbedit6.Text)>0) and (strtoint(dbedit6.Text)<10))and(length(dbedit6.Text)=1) then
      dbedit6.Text:='0'+dbedit6.Text;
    if ((strtoint(dbedit7.Text)>0) and (strtoint(dbedit7.Text)<10))and(length(dbedit7.Text)=1) then
      dbedit7.Text:='0'+dbedit7.Text;
      //开始打印字段 font:=dbedit1.Font;
     Font.Size:=Font.Size+6;
     X1:=X1+OffsetX;
     Y1:=Y1-OffsetY+TextHeight(dbedit1.Text);
     TextOut(X1,Y1,dbedit1.Text);
     font:=dbedit2.Font;
     Font.Size:=Font.Size+6;
     X2:=X2+OffsetX-round((TextWidth(dbedit2.Text))/2);
     Y2:=Y2-OffsetY+Textheight(dbedit2.Text);
     TextOut(X2,Y2,dbedit2.Text);
     font:=dbedit3.Font;
     X3:=X3+OffsetX-round((TextWidth(dbedit3.Text))/2);
     Y3:=Y3-OffsetY+round((Textheight(dbedit3.Text))/2);
     TextOut(X3,Y3,dbedit3.Text);
     font:=dbedit4.Font;
     Font.Size:=Font.Size+6;
     X4:=X4+OffsetX;
     Y4:=Y4-OffsetY+Textheight(dbedit4.Text);
     TextOut(X4,Y4,dbedit4.Text);
     font:=dbedit5.Font;
     Font.Size:=Font.Size+6;
     X5:=X5+OffsetX-TextWidth(dbedit5.Text);
     Y5:=Y5-OffsetY+Textheight(dbedit5.Text);
     TextOut(X5,Y5,dbedit5.Text);
     X6:=X6+OffsetX-round((TextWidth(dbedit6.Text))/2);
     Y6:=Y6-OffsetY+Textheight(dbedit6.Text);
     TextOut(X6,Y6,dbedit6.Text);
     X7:=X7+OffsetX-round((TextWidth(dbedit7.Text))/2);
     Y7:=Y7-OffsetY+Textheight(dbedit7.Text);
     TextOut(X7,Y7,dbedit7.Text);
     end;
     enddoc;
      

  3.   

    PointX:=GetDeviceCaps(printer.Handle,LOGPIXELSX)/25.4;//每毫米打印机的像素数
       PointY:=GetDeviceCaps(printer.Handle,LOGPIXELSy)/25.4;
       xx:=PointX/(screen.PixelsPerInch/25.4);
       yy:=PointY/(screen.PixelsPerInch/25.4);
       PointX:=PointX/xx;
       Pointy :=PointY/yy;
    打印机和显示器的比例这样就所见及所得了!