打印不清楚,有好办法吗。(200分)

  • 主题发起人 主题发起人 hmily1688
  • 开始时间 开始时间
H

hmily1688

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一个TPanel上创建了n个Tlabel组件,把这些组件打在A4纸上,打出的字很不清楚 ,
好似马赛克,各位谁有好办法。代码如下
void __fastcall(TPanel *APanel)
{
int PointX,PointY,x,y;
PointX = GetDeviceCaps(Printer()->Handle, LOGPIXELSX) / 25.38;
PointY = GetDeviceCaps(Printer()->Handle, LOGPIXELSX) / 25.38;
HDC dc = GetWindowDC(APanel->Handle);
Graphics::TCanvas *PanelCanvas = new Graphics::TCanvas;
PanelCanvas->Handle = dc;
TRect rect = PanelCanvas->ClipRect;
OffsetRect(&rect,-rect.Left,rect.Top);
Graphics::TBitmap *Bitmap = new Graphics::TBitmap;
Bitmap->PixelFormat = pf24bit;
Bitmap->HandleType = bmDIB;
Bitmap->Width = rect.Right;
Bitmap->Height= rect.Bottom;
Bitmap->Canvas->CopyRect(rect,PanelCanvas,PanelCanvas->ClipRect);
DIBSECTION DibSec;
GetObject(Bitmap->Handle, sizeof(DibSec), &DibSec);
Printer()->begin
Doc();
StretchDIBits( Printer()->Canvas->Handle, 0, 60,
Printer()->PageWidth, Printer()->PageHeight,
0, 0, Bitmap->Width, Bitmap->Height,
DibSec.dsBm.bmBits, (BITMAPINFO*)&DibSec.dsBmih,
DIB_RGB_COLORS, SRCCOPY);
Printer()->EndDoc();
delete Bitmap;
delete PanelCanvas;
ReleaseDC(APanel->Handle,dc);
}[:(]
 
void __fastcall(TPanel *APanel)
这样的是过程声明吗。
 
把函数名给丢了。
 
你的代码全不全,PointX,PointY 后面根本没用到。
用delphi 默认的 Form 输出打印一下看看是什么效果。
是不是代码中降低了分辩率。
 
代码不全,pointX,pointY是打在纸的下半部分用到的,下半部分清楚,所以就删掉了,
只是打印图片这部分不清楚。
 
可能你的图片比较小,自己进行了放大。
你换一张大的图片试试。
 
我自己解决了,换了一种写法,不打印图片了,不好玩,不过这200分还是便宜你了。[:D]
 

Similar threads

后退
顶部