var 
  bmp :TBitmap;
begin
  bmp := TBitmap.Create;
  bmp.LoadFromFile("you file name");
  bmp.Transparent := true;
  bmp.TransparentColor := clBlack;//可能是其他颜色
  Image.Canvas.CopyRect(Image.ClientRect,bmp.Canvas,Image.ClientRect);
  bmp.Free;
end;
试一试。

解决方案 »

  1.   

    用LoadLibraryEx肯定可以,下面的代码就可以显示,我已测试过.
    HMODULE handle=LoadLibraryEx("E:\\cards.dll",NULL,LOAD_LIBRARY_AS_DATAFILE);
    HBITMAP hbp=LoadBitmap(handle,MAKEINTRESOURCE(1));
    CBitmap bitmap;
    bitmap.Attach (hbp);
    BITMAP bp;
    bitmap.GetBitmap (&bp);
    CDC* dc=GetDC ();
    CDC memDC;
    memDC.CreateCompatibleDC (dc);
    memDC.SelectObject (&bitmap);
    dc->BitBlt (0,0,bp.bmWidth ,bp.bmHeight ,&memDC,0,0,SRCCOPY);
    ReleaseDC(dc);
    FreeLibrary(handle);
      

  2.   

    to  longx:HMODULE hLoadLib;
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
        hLoadLib=LoadLibraryEx("d:\\testnum\\cards.dll",NULL,LOAD_LIBRARY_AS_DATAFILE);    ShowMessage((int)(hLoadLib)) ;
    }
    在win98下为什么得到的句柄显示为零?!实现就是不成功!
      

  3.   


    帮到底了:    不一定要原搬它的嘛,怎么简单就怎么着吧!    用画图(若嫌烦,到PHOTOSHOP里定制一个ACTION,几分钟搞定,注意:PHOTOSHOP中可能会在颜色交界处自动取中间色,还是用画图的油漆桶保险)把扑克的边框以外填成平常不用的颜色,如clFuchsia等。    保存成BMP(若存成JPEG,则可能在使用透明效果时出现问题)。这样就不会整个图片都透明了。
      

  4.   

    to longx:
        可能版本或环境不一样,你是成功的,我不行。
    to enlightenment(阿明):
        是一种应急方式,将透明色改成图片中不用的色彩,但改52张牌很费事,
     不知 windows的纸牌与80拖拉机的作者是怎样搞出的,是VCL未处理得好?!