情况是调用一个dll函数画图,但只能画在有句柄窗体控件(如:panel)上,怎样才可以实现画图到控件的同时也画到一个bmp对象上?

解决方案 »

  1.   

    有个TImage控件的,可以加载bmp图片,也可以利用它的Convas属性来画图
      

  2.   

    等到在Panel上绘图完毕后,使用BitBlt函数,把图像复制到Image上。BitBlt(Panel1.Handle, 0, 0, Panel1.Width, Panel1.Height,
           Image1.Canvas.Handle, 0, 0, SRCCOPY);
    Image1.Refresh;
      

  3.   

    谢谢楼上两位,不过两种方法都不太可行。首先这个dll只能传入窗体控件句柄作为参数,不能传入Canvas作参数。而等到在Panel上绘图完毕后,使用BitBlt函数复制图像的话,如果在程序运行时,有其他窗口挡住Panel就不能复制到正确图像了。
      

  4.   

    窗口看不见的话,似乎不能复制到图像,使用BitBlt函数得到的是空白图像。
      

  5.   

    image1.Canvas.Handle 传这个也不行吗?
    画到 panel 上,其实不能保存位图的,被其它窗口遮住后就消失了,image 可以保存