请问有没有人有打印公章的控件?(100分)

  • 主题发起人 主题发起人 DSM2000
  • 开始时间 开始时间
D

DSM2000

Unregistered / Unconfirmed
GUEST, unregistred user!
急需一个打印公章的控件,要求可按公章的原样打印,关键是弧形文字的打印。
最好就是有源代码哦! :)
番提供线索的都有奖励。吹水的也欢迎。
 
haha.没听说过。
不过集合了各种大公司,政府部门的公章,应该是个很流行的控件。
干脆自己做吧
 
嘿嘿,你咨询一下律师吧,违法的哦
 
wjiachun 大虾,我的客户要求我打印它的公章,我有什么办法呢?
那个律师可以解决我的问题! :)
 
扫描图案?打印不行吗?
 
弧形文字用TLogFont来建立,红色部分是用来指定文字的角度的。
typedef struct tagLOGFONT {
LONG lfHeight;

LONG lfWidth;

<font color=red> LONG lfEscapement;

LONG lfOrientation;
</font>
LONG lfWeight;

BYTE lfItalic;

BYTE lfUnderline;

BYTE lfStrikeOut;

BYTE lfCharSet;

BYTE lfOutPrecision;

BYTE lfClipPrecision;

BYTE lfQuality;

BYTE lfPitchAndFamily;

TCHAR lfFaceName[LF_FACESIZE];

} LOGFONT, *PLOGFONT;

 
weicong:
我要的公章的字是可变的,随着不同的部门登陆变成相应的公章,
而且时间也是实时变动的。应该由程序自动生成。
吕雪松:
你的弧形字体我很有兴趣,不知能否打印呢?能共享源码吗? :)
 
难道真的没有类似的控件吗?
若要自己写,能提供思路吗?
 
摘自《家庭电脑世界》2000年第12期,你可以根据需要自行改动。

新建一个Delphi工程,在窗体上加入一个TButton控件,双击Button1,完成如下代码:
procedure TForm1.Button1Click(Sender: TObject);
var
r:string;
LogFont:TLogFont;
NewFont,OldFont:THandle;
begin

SetBkMode(Canvas.Handle,Transparent);
LogFont.lfHeight :=60;
{lfHeight指定以逻辑单位标定的字体高度,取值可为正
负或零,对于需要随意定义字体高度的情况下通常取负值,以保证获得实际尺寸的字体。}
LogFont.lfWidth :=30;
{lfWidth用于指定字体的平均宽度,由于Windows系统下
的大多数字体都是比例字体因而采用平均宽度这个表示方法。若指定为0,则系统会自动根
据适当的比例自动处理宽度。}
LogFont.lfEscapement :=400;
{指定输出方向与当前坐标系X轴之间的以十分之一
度为单位的角度,这里就是40度了。}
LogFont.lfWeight :=0;
LogFont.lfItalic :=0;

LogFont.lfUnderline :=0;

LogFont.lfStrikeOut :=0;

LogFont.lfCharSet :=DEFAULT_CHARSET;

r :='宋体'#0;
move(r[1],LogFont.lfFaceName[0],length(r)+1);
NewFont :=CreateFontIndirect(LogFont);
OldFont :=SelectObject(Canvas.Handle,NewFont);
Canvas.TextOut(10,200,'测试字体');{输出内容是“测试字体”}
SelectObject(Canvas.Handle,OldFont);{用完以后还要还原字体}
DeleteObject(NewFont);
end;


Windows的逻辑字体(LogFont)可以使用CreateFont或CreateFontIndirect这两个
Windows API函数来定义任何想要的字体,由于CreateFont所需的参数太多通常我们使用
CreateFontIndirect来建立所需的逻辑字体,这个API函数在Delphi中的声明为
function CreateFontIndirect(const p1: TLogFont): HFONT;
stdcall;

Delphi 4 的Windows.pas中TLogFont的定义在第12407开始。对于其中
lfItalic、lfUnderline、lfStrikeOut的值,如果非0则分别表示采用斜体字、加上下
划线、加上删除线,反之则用正常字体。
 
打印公章,我看这可不太好!
如果只是为了好看,也就罢了,但要是......可就......
 
wjiachun:
你的办法我先试一下,灵的话马上买单。
mafan:
我也觉得这样似乎不妥,打印出来的公章有法律效力吗?
但客户这么要求有什么办法呢?不过,撇开这些问题不谈,
光从技术考虑,应该会好一点。
 
其实您还不如先用作图软件制作位图,然后打印出来算啦,不用程序作啦。
 
同意楼上说的,把公章扫进来,以图片形式打出来,应该没问题
 
扫描吧。
 
看来是没有这样的控件了,还是自己写吧!
 
最好还是用图片好一些,不考虑字体,有的中间还有一个红五星呢,难道你又用Shape来画?
而且文字或五角星有可能失真,所以最好还是用图片。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部