怎么用针式打印机内的字体打印文字如EPSON670K+的(50分)

  • 主题发起人 主题发起人 wlyft
  • 开始时间 开始时间
W

wlyft

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么用针式打印机内的字体打印文字如EPSON670K+的
 
路过学习 帮你顶
 
我也想知道。
 
EPSON系列的针式打印机的面板都有一栏是字体设置的,它上边有三个指示灯,而下边就黑色蓝色标志的图形,其实这些就是设置其打印字体的,你只是需要按旁边的一个键就可以按照顺序设置你所想要的字体。
 
刀霸
其实用记事本还是用
try
Printer.begin
Doc;
DrawPrint(10,1,1,'system','Printer对象的例子10,1,1');
DrawPrint(10,strtoint(edit1.text),strtoint(edit2.text),'system','Printer对象的例子'+edit1.Text+'/'+edit2.Text);
finally
Printer.EndDoc;
这个东西打都不是用打印机的字体打的!
 
实际上我是想打印机票上的拉长形字体和那种单点组成的英文和数字
怎么实现
 
自己画图,再用通过一定的比例拉伸就可以,想要什么样的字就什么样的字。
 
怎么画?
不画行不行?
 
如果不想画,那么就要购买相应的字体了.
不过,自己画代码量大一些,但灵活方便.
 
我看过资料EPSON打印机针打有可以发送控制码就能生成
倍高字体,我估计就是这样做
我知道是用ESC w 1
这个指令,但是就是不知怎么把指令发送给打印机再打字出来
 
去找相应的字体装上不就得了
 
我的解决办法:
针式打印机的效果应可以了
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
Function Wstring(str:string;SFont:TFont;CWidth,CHeight:integer):TBitMap;
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.dfm}
{=====================================================
str:你要打印的字符
SFont:你要的字体
CWidth:你的目标宽度
CHeight:你要的目标高度
=====================================================}
Function TForm1.Wstring(str:string;SFont:TFont;CWidth,CHeight:integer):TBitMap;
var Bmp:TBitmap;
begin
Result:=TBitmap.create;
if length(str)<>0 then
begin
Bmp:=TBitmap.create;
Bmp.Canvas.Font.Assign(SFont);
Bmp.Width:=Bmp.Canvas.TextWidth(str);
Bmp.Height:=Bmp.Canvas.TextHeight('H');
Bmp.Canvas.TextOut(0,0,str);
Result.Width:=CWidth;
Result.Height:=CHeight;
Result.Canvas.StretchDraw(Result.Canvas.ClipRect,Bmp);
Bmp.Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
self.Canvas.Draw(50,50,Wstring('1234567890',self.Font,500,90));
self.Button1.Visible:=False;
self.Color:=ClWhite;
self.Print;
self.Button1.Visible:=True;
self.Color:=ClBtnFace;
end;

end.
 
一个简单的问题竟然能被你们做得这么复杂,pfpf, 以下是正解:
CreateFontIndirect
SelectObject
DrawTextEx
 
问lxggc
你那个具体怎么做?
假如我用DrawPrint又得怎么做?
 
我不知道竟然还有 DrawPrint, 你自己查一下 win32 sdk 或者 msdn ,真的很简单的
 
var LogFont: TLogFont;
hNewFont: HFont;
begin
with Printer.Canvasdo
begin
GetObject(Font.Handle,SizeOf(LogFont),Addr(LogFont));
LogFont.lfHeight := 400;
LogFont.lfWidth := 30;
logfont.lfFaceName := '宋体';
hNewFont:=CreateFontIndirect(LogFont);
Pen.Color:=clblack;
Font.Handle := hNewFont;
// Font.Size:=FtSize;
Textout(XPos,YPos,Str);
end;
DeleteObject(hNewFont);

字间距怎么设?
 
多人接受答案了。
 
后退
顶部