var
  DC: HDC;
begin
  // 省略,已获得一个dc句柄
  这里如何把一长图片绘制到这个指定句柄的设备里?PNG格式的
end;

解决方案 »

  1.   

      var gp : tgpgraphics;
    gp := tgpgraphics.create(dc);
    //在gp上画,调用gp.drawimage();
    另外也可以用bitblt().....;
      

  2.   

    TGraphic?Create没有参数啊,也没有drawimage
      

  3.   

    我从TGraphicControl继承写个控件,切图时会闪烁,我百度得知用双缓冲解决(只考虑内部实现)
    控件有2个属性,是TPngImage类型,如果直接绘图会闪烁
    Canvas.StretchDraw(ClientRect, FImg1);我不知道该如何在内存里画(来源是TPngImage),百度了一下知道画好后用Bitblt来拷贝
      

  4.   


    还差一步了,现在已经实现切图不闪烁了,但是因为用CreateCompatibleBitmap创建的背景都是黑色
    现在的情况是PNG图像透明的部分都显示为黑色了
      

  5.   

    搞定了,用PerformEraseBackground将内存DC背景擦除,然后绘图,再Bitblt到显示设备上,