http://www.tongchan.com/kaoshishiti.htm不想写出代码的话,提供几个可用的控件也可以说说。
不过,在Delphi中,有这样做图章的控件吗????做这样题的思路、框架是什么??可以说说吗???

解决方案 »

  1.   

    要求用Delphi做出这道题!!如果做的好的话,可付款邮购!!
      

  2.   

    通过Automation MS Word搞不定,不可能那么逼真,虽然有点像,
    还是自己派生一个TGraphicControl控件,覆盖Paint,
    这可是要懂图形技术啊。我搞不定。
      

  3.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        Image1: TImage;
        Edit1: TEdit;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        procedure GetImage(sStr:string);
        procedure GetLogFont(iAnc:integer;fCanvas:tCanvas);
        procedure DrawFive(x,y,r:integer;fCanvas:tCanvas);
        function GetPoint(nI:integer;nJ:integer;var NAnc:integer):Tpoint;    { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
      if self.Edit1.text='' then
        exit
      else
        GetImage(edit1.Text);
    end;procedure Tform1.Getimage(sStr:String);
    var
      nX,nY,nZ:integer;
      nPoint:Tpoint;
    begin
      nY:=length(widestring(sstr));
      if ny>18 then ny:=18;  image1.Canvas.Pen.Width:=3;
      image1.Canvas.Ellipse(50,20,170,140);//110,80
      drawfive(110,80,20,image1.Canvas );
      for nx:=1 to ny do begin
        npoint:=GetPoint(nx,ny,nz);
        image1.Canvas.Font.Size:=10;
        //image1.Canvas.Font.Style:=[fsBold];
        getlogfont(nz,image1.Canvas);
        image1.Canvas.TextOut(npoint.x,npoint.y,copy(widestring(sStr),nx,1));  end;
    end;procedure Tform1.GetLogFont(iAnc:integer;fCanvas:tCanvas);
    var
      FlogFont:LogFont;
    begin
      FillChar(FLogFont,Sizeof(TLogFont),0);
          With FlogFont do
          begin
           lfHeight:=fCanvas.font.Height;
           lfWidth:=0;
           lfEscapement:=iAnc;     //想旋转多少度,修改这里的参数就可以了啊
           lforientation:=lfEscapement;
           lfWeight:=Fw_Normal;
           lfItalic:=0;
           lfUnderline:=0;
           lfStrikeOut:=0;
           lfCharSet:=GB2312_CHARSET;
           StrPCopy(lfFaceName,'宋体');
           lfQuality:=PROOF_QUALITY;
           lfOutPrecision:=OUT_TT_ONLY_PRECIS;
           lfClipPrecision:=CLIP_DEFAULT_PRECIS;
           lfPitchAndFamily:=Variable_Pitch;
          end;
          fCanvas.Font.Handle:=CreateFontIndirect(FLogFont);
    end;
    function Tform1.GetPoint(ni:integer;nj:integer;var Nanc:integer):Tpoint;
    var
      pPoint:Tpoint;
      RAn:Extended;
      tempI:integer;
    begin
      {18个字:360
        9个字:180
        0个字:0
      }
      tempI:=100*(16-nJ+2*nI);
      if tempI<2700 then
        tempI:=2700-tempI
      else
        tempi:=6300-tempI;  Nanc:=tempi-900;  ran:=pi*(tempi/1800);
      pPoint.x:=110+round(55*cos(ran));
      pPoint.Y:=80-round(55*sin(ran));
      result:=pPoint;end;
    procedure Tform1.DrawFive(x,y,r:integer;fCanvas:tCanvas);
    var
      oldColor:Tcolor;
      nX:integer;
      nR:integer;
      tempRgn:hrgn;
      pPoint:Array[0..9] of Tpoint;
    begin
      for nx:=0 to 9 do begin
        if (nx mod 2=0) then nR:=r else nR:=round(r*sin(pi/10)/sin(pi*126/180));
        pPoint[nx].X:=x+round(nR*cos(pi*(nx/5+0.5)));
        pPoint[nx].y:=y-round(nR*sin(pi*(nx/5+0.5)));
      end;
      oldcolor:=fcanvas.Brush.Color;
      fcanvas.Brush.Color:=clblack;  temprgn:=CreatePolygonRgn(ppoint[0],10,ALTERNATE);
      FillRgn(fcanvas.Handle,temprgn,fcanvas.Brush.Handle);
      
      fcanvas.Brush.Color:=oldcolor;
    end;
    end.
      

  4.   

    斗胆请教:procedure Tform1.GetLogFont(iAnc:integer;fCanvas:tCanvas);
    这个函数是起个什么作用啊?
      

  5.   

    自己直接在 image.canvas 上画,很好控制,只要有字体,想怎么画都行,如果要想什么特效,划完了还可以对 image 做变形操作。
    如果方便,请帮我儿子投一票
    http://www.nutricia.com.cn/view.asp?id=736
    谢谢。