我用timage.create方法建立了一个image,但在其上不能写字画图,不知为什么?说明:我建立的image是放在Scrollbox上的,如果直接在Form上建立是可以使用的。

解决方案 »

  1.   


    var
      Form1: TForm1;
      Image2:TImage;
    implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
      Image2:=TImage.Create(nil);
      Image2.Parent:=ScrollBox1;
      Image2.Align:=alClient;
      Image2.Canvas.TextOut(10,10,'aaa');
    end;不知道你的代码是啥样的。
      

  2.   


    我和你的代码基本一样,但最后加了一条: image2.free;因为这个image我其他地方都不用,留着妨碍工作。看来问题就出在这一条,不知道有什么办法将image2用后就删掉?
      

  3.   

    我原来用的办法是:1.所有组件都预先设计好;
    2.要用什么组件再让它显示,不用的都使它们不显示,每一个组件都要考虑。但觉得这样的处理方式很繁琐,每个过程前面有一大堆这种语句,所以想改为临时创建,用后就free掉,但现在看来似乎不行?不知道大家如何处理这一问题?
      

  4.   

    你可以这么做,首先定义一个全局list列表,每次创建一个bmp就加入list列表,然后在窗体释放时手动将list里的bmp进行释放,或者在需要释放时手动清掉list的内容
    另外理论上设定了parent后你的父节点在释放时会帮你释放你创建的bmp的,不过我只是从书上得知没必要再手动释放,但从来没敢这么做过
    在list如何添加和清除bmp不用我再教了吧,呵呵
      

  5.   

    我想到一个办法,终于解决了问题。
    利用Clrwin过程来禁止scrollbox,
    Clrwin是所有其它过程一开始要调用的。
      

  6.   

    图片上写字,就用Image的Canvas画面去画啊.