<?xml version='1.0' encoding='gb2312' ?>
<BODY>
<PRININFO><PARINTNAME>Generic / Text Only</PARINTNAME></PRININFO>
<PAGE>
<ATTRIB><PAGESIZE>760,500</PAGESIZE></ATTRIB>
<TEXT><RECT>344,156,626,239</RECT><DATA>565ndfiehk6</DATA><FORMAT>37</FORMAT><FONT><NAME>宋体</NAME><ROTATE>0</ROTATE><HEIGHT>31</HEIGHT><STYLE>0</STYLE></FONT></TEXT><TEXT><RECT>139,805,637,979</RECT><DATA>GJOJGIMNBSLA</DATA><FORMAT>37</FORMAT><FONT><NAME>Arial</NAME><ROTATE>180</ROTATE><HEIGHT>42</HEIGHT><STYLE>1</STYLE></FONT></TEXT></PAGE>
</BODY>
上面这个XML,〈PAGESIZE>760,500</PAGESIZE〉是整个图片大小,其中有两个文本text,要关注的有RECT位置,DATA数据,FONT里NAME字体,ROTATE旋转角度,HETGHT字体高度,根据这些内容我需要把它做成BMP格式的图片,然后再转化成PCX格式的图片,请高手帮忙,指点一些

解决方案 »

  1.   

    MyImage := TImage.Create(nil);
      with MyImage.Canvas do
      begin
        Font.Name := '宋体';
        Font.Height := 63;
        tf := TFont.Create;
        tf.Assign(Font);
        GetObject(tf.Handle,sizeof(lf),@lf);
        lf.lfEscapement := 00;
        lf.lfOrientation := 00;
        tf.Handle := CreateFontIndirect(lf);
        Font.Assign(tf);
        tf.Free;
      end;
      MyImage.Width := MyImage.Canvas.TextWidth('你好');
      //showmessage(IntToStr(MyImage.Width));
      MyImage.Height := MyImage.Canvas.TextHeight('你好');
      //showmessage(IntToStr(MyImage.Height));
      i := MyImage.Width;
      MyImage.Canvas.TextOut(0,0,'你好');
      MyImage.Picture.SaveToFile('D:\aa.bmp');
    我用上面的语句来写,MyImage的高度宽度show出来是会根据Font.Name,Font.Height的改变而变,但实际图片保存后,它的高度宽度就是固定某个值,怎么会这样的呢
      

  2.   

    wid := MyImage.Canvas.TextWidth('你好');
      MyImage.Picture.Graphic.Width := wid;
      Heg := MyImage.Canvas.TextHeight('你好');
      MyImage.Picture.Graphic.Height  := Heg;
    这样就行了。
      

  3.   

    因为TImag它不能直接修改宽和高,只有它的Graphic才能修改宽和高。
      

  4.   

    哦,知道了,但要把BMP的转化为PCX可以怎么做,还是直接就形成PCX格式的图片?