Printer()->BeginDoc();
TextOut(Printer()->Handle, 400, 450,Label1->Caption.c_str(),Label1->Caption.Length());
TextOut(Printer()->Handle, 345, 660,Label2->Caption.c_str(),Label2->Caption.Length());
TextOut(Printer()->Handle, 645, 660,Label3->Caption.c_str(),Label3->Caption.Length());
TextOut(Printer()->Handle, 650, 1280,Edit1->Text.c_str(),Edit1->Text.Length());
Printer()->NewPage();
Printer()->EndDoc();
在我的电脑上打印的位置没有问题,但在别人的机上位置就不一样了,为什么这样呢?请指教一下!
10 个解决方案
#1
我以前碰到过,与打印驱动有关
#2
与打印机的分辨率有关,程序需要先获得打印机的分辨率,然后再调整字体大小和打印的坐标位置。
#3
打印的坐标位置与打印机的分辨率有什么关系?应该怎样做?希望能给出代码。谢谢!
#4
prnptr = Printer();
// 获取分辨率
ipixelPerInchX = GetDeviceCaps(prnptr->Handle, LOGPIXELSY);
ipixelPerInchY = GetDeviceCaps(prnptr->Handle, LOGPIXELSX);
// 每厘米对应的点数
ipixelPerCmX = (int)(ipixelPerInchX / 2.54);
ipixelPerCmY = (int)(ipixelPerInchY / 2.54);
// 获取分辨率
ipixelPerInchX = GetDeviceCaps(prnptr->Handle, LOGPIXELSY);
ipixelPerInchY = GetDeviceCaps(prnptr->Handle, LOGPIXELSX);
// 每厘米对应的点数
ipixelPerCmX = (int)(ipixelPerInchX / 2.54);
ipixelPerCmY = (int)(ipixelPerInchY / 2.54);
#5
prnptr = Printer();
// 获取分辨率
ipixelPerInchX = GetDeviceCaps(prnptr->Handle, LOGPIXELSX);
ipixelPerInchY = GetDeviceCaps(prnptr->Handle, LOGPIXELSY);
// 每厘米对应的点数
ipixelPerCmX = (int)(ipixelPerInchX / 2.54);
ipixelPerCmY = (int)(ipixelPerInchY / 2.54);
prnptr->Orientation = poPortrait;
...
prnptr->Canvas->TextOut(m_BaseX+ ipixelPerCmX*9.35, m_BaseY+ ipixelPerCmY*1.2, "打印标题");
// 获取分辨率
ipixelPerInchX = GetDeviceCaps(prnptr->Handle, LOGPIXELSX);
ipixelPerInchY = GetDeviceCaps(prnptr->Handle, LOGPIXELSY);
// 每厘米对应的点数
ipixelPerCmX = (int)(ipixelPerInchX / 2.54);
ipixelPerCmY = (int)(ipixelPerInchY / 2.54);
prnptr->Orientation = poPortrait;
...
prnptr->Canvas->TextOut(m_BaseX+ ipixelPerCmX*9.35, m_BaseY+ ipixelPerCmY*1.2, "打印标题");
#6
TO BenLeak(摇摆人) :
prnptr->Orientation = poPortrait; 这行什么意思?还有ipixelPerCmX*9.35,ipixelPerCmY*1.2乘9.35和1.2又是什么意思呢?不太懂,请说明一下,谢谢!
prnptr->Orientation = poPortrait; 这行什么意思?还有ipixelPerCmX*9.35,ipixelPerCmY*1.2乘9.35和1.2又是什么意思呢?不太懂,请说明一下,谢谢!
#7
prnptr->Orientation = poPortrait; 打印纵向或者横向
9.35 与 1.2 就是位置 9.35、1.2厘米偏移
9.35 与 1.2 就是位置 9.35、1.2厘米偏移
#8
分辨率就是 DPI(点每英寸),1 英寸为 2.54 厘米,所以 ipixelPerCmX 就是 1 厘米对应的象素点
#9
对于不同的打印机m_BaseX和m_BaseY应该是一样的吧?就是说在不同的打印机上
prnptr->Canvas->TextOut(m_BaseX+ ipixelPerCmX*9.35, m_BaseY+ ipixelPerCmY*1.2, "打印标题");
这一句所打印出来的位置都是相同的吧?
prnptr->Canvas->TextOut(m_BaseX+ ipixelPerCmX*9.35, m_BaseY+ ipixelPerCmY*1.2, "打印标题");
这一句所打印出来的位置都是相同的吧?
#10
?????
#1
我以前碰到过,与打印驱动有关
#2
与打印机的分辨率有关,程序需要先获得打印机的分辨率,然后再调整字体大小和打印的坐标位置。
#3
打印的坐标位置与打印机的分辨率有什么关系?应该怎样做?希望能给出代码。谢谢!
#4
prnptr = Printer();
// 获取分辨率
ipixelPerInchX = GetDeviceCaps(prnptr->Handle, LOGPIXELSY);
ipixelPerInchY = GetDeviceCaps(prnptr->Handle, LOGPIXELSX);
// 每厘米对应的点数
ipixelPerCmX = (int)(ipixelPerInchX / 2.54);
ipixelPerCmY = (int)(ipixelPerInchY / 2.54);
// 获取分辨率
ipixelPerInchX = GetDeviceCaps(prnptr->Handle, LOGPIXELSY);
ipixelPerInchY = GetDeviceCaps(prnptr->Handle, LOGPIXELSX);
// 每厘米对应的点数
ipixelPerCmX = (int)(ipixelPerInchX / 2.54);
ipixelPerCmY = (int)(ipixelPerInchY / 2.54);
#5
prnptr = Printer();
// 获取分辨率
ipixelPerInchX = GetDeviceCaps(prnptr->Handle, LOGPIXELSX);
ipixelPerInchY = GetDeviceCaps(prnptr->Handle, LOGPIXELSY);
// 每厘米对应的点数
ipixelPerCmX = (int)(ipixelPerInchX / 2.54);
ipixelPerCmY = (int)(ipixelPerInchY / 2.54);
prnptr->Orientation = poPortrait;
...
prnptr->Canvas->TextOut(m_BaseX+ ipixelPerCmX*9.35, m_BaseY+ ipixelPerCmY*1.2, "打印标题");
// 获取分辨率
ipixelPerInchX = GetDeviceCaps(prnptr->Handle, LOGPIXELSX);
ipixelPerInchY = GetDeviceCaps(prnptr->Handle, LOGPIXELSY);
// 每厘米对应的点数
ipixelPerCmX = (int)(ipixelPerInchX / 2.54);
ipixelPerCmY = (int)(ipixelPerInchY / 2.54);
prnptr->Orientation = poPortrait;
...
prnptr->Canvas->TextOut(m_BaseX+ ipixelPerCmX*9.35, m_BaseY+ ipixelPerCmY*1.2, "打印标题");
#6
TO BenLeak(摇摆人) :
prnptr->Orientation = poPortrait; 这行什么意思?还有ipixelPerCmX*9.35,ipixelPerCmY*1.2乘9.35和1.2又是什么意思呢?不太懂,请说明一下,谢谢!
prnptr->Orientation = poPortrait; 这行什么意思?还有ipixelPerCmX*9.35,ipixelPerCmY*1.2乘9.35和1.2又是什么意思呢?不太懂,请说明一下,谢谢!
#7
prnptr->Orientation = poPortrait; 打印纵向或者横向
9.35 与 1.2 就是位置 9.35、1.2厘米偏移
9.35 与 1.2 就是位置 9.35、1.2厘米偏移
#8
分辨率就是 DPI(点每英寸),1 英寸为 2.54 厘米,所以 ipixelPerCmX 就是 1 厘米对应的象素点
#9
对于不同的打印机m_BaseX和m_BaseY应该是一样的吧?就是说在不同的打印机上
prnptr->Canvas->TextOut(m_BaseX+ ipixelPerCmX*9.35, m_BaseY+ ipixelPerCmY*1.2, "打印标题");
这一句所打印出来的位置都是相同的吧?
prnptr->Canvas->TextOut(m_BaseX+ ipixelPerCmX*9.35, m_BaseY+ ipixelPerCmY*1.2, "打印标题");
这一句所打印出来的位置都是相同的吧?
#10
?????