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;
试一试。
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;
试一试。
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);
void __fastcall TForm1::FormCreate(TObject *Sender)
{
hLoadLib=LoadLibraryEx("d:\\testnum\\cards.dll",NULL,LOAD_LIBRARY_AS_DATAFILE); ShowMessage((int)(hLoadLib)) ;
}
在win98下为什么得到的句柄显示为零?!实现就是不成功!
帮到底了: 不一定要原搬它的嘛,怎么简单就怎么着吧! 用画图(若嫌烦,到PHOTOSHOP里定制一个ACTION,几分钟搞定,注意:PHOTOSHOP中可能会在颜色交界处自动取中间色,还是用画图的油漆桶保险)把扑克的边框以外填成平常不用的颜色,如clFuchsia等。 保存成BMP(若存成JPEG,则可能在使用透明效果时出现问题)。这样就不会整个图片都透明了。
可能版本或环境不一样,你是成功的,我不行。
to enlightenment(阿明):
是一种应急方式,将透明色改成图片中不用的色彩,但改52张牌很费事,
不知 windows的纸牌与80拖拉机的作者是怎样搞出的,是VCL未处理得好?!