D
dirk
Unregistered / Unconfirmed
GUEST, unregistred user!
xusong168,我上面已经说过,我试过TBitmap的,你一再追问我“你到底试过没有?”,唉,看了下面的代码你该不会再这么问了吧(下面的代码在VBA中运行的结果和上面的没什么不同)?<br><br>我最早就是用TBitmap的,有问题,就用TImage了,这样的代码在delphi中调用没有问题的,但在VBA中,在Canvas上的操作似乎根本就没有用。<br><br> img_bj: TBitmap;//TImage;<br> img_wz: TBitmap;//TImage;<br> img_qj: TBitmap;//TImage;<br>function LoadQJ(PicName: PChar;X,Y:integer): boolean; stdcall;<br>begin<br> img_qj.Free ;<br> img_qj:=TBitmap.Create;// TImage.Create(nil);<br>// img_qj.AutoSize :=true;<br> img_qj.LoadFromFile(PicName);<br> bitblt(img_bj.Canvas.Handle ,x,y,img_qj.width,img_qj.height,img_qj.canvas.handle,0,0,SRCCOPY);<br>// img_bj.Canvas.Draw(X ,Y ,img_qj.Canvas );<br> Result :=true;<br>end;<br><br>function LoadText(Text,FontName: PChar;X,Y:integer;FontColor:integer=0;FontSize:integer=9;<br> FontBold:boolean=false;FontItalic:boolean=false;FontUnderline:boolean=false): boolean; stdcall;<br>begin<br> img_bj.Canvas.Font.Name :=FontName;<br> img_bj.Canvas.Font.Size :=FontSize;<br> img_bj.Canvas.Font.Color :=FontColor;<br> img_bj.Canvas.Font.Style :=[];<br> if FontBold then img_bj.Canvas.Font.Style :=img_bj.Canvas.Font.Style +[fsBold];<br> if FontItalic then img_bj.Canvas.Font.Style :=img_bj.Canvas.Font.Style +[fsItalic];<br> if FontUnderline then img_bj.Canvas.Font.Style :=img_bj.Canvas.Font.Style +[fsUnderline];<br> img_bj.Canvas.TextOut(0,0,Text);<br> Result :=true;<br>end;<br>bitblt、和TextOut都不起作用。<br><br>>TImage不行,因为它需要一个Windows DC,也就是说,它必须放在一个Form上才有效,<br>在dll中的Form没正常显示出来的情况下,就不行了。 <br><br>这点是不成立的,这是我上面的一段描述:<br>“[red]在delphi中图片、文字完全可以合成,产生新的图片文件,但是在word中调用,只能把背景图保存出来,但前景图、文字却不能画到背景图上去,[/red]”<br>背景图保存出来了,怎么会没有DC呢?<br><br>嗯,你所说的试过没有?如果你还是觉得TBitmap一定能回答这个问题,那么贴出代码,我调试出来就OK。