请问在窗体上如何使一个IMAGE控件中的图片透明! (100分)

  • 主题发起人 主题发起人 绝色神偷
  • 开始时间 开始时间

绝色神偷

Unregistered / Unconfirmed
GUEST, unregistred user!
我的意思是它能和窗体融合在一起。。。谢谢!!
 
PHOtoshop 作一下!
 
不是有这个属性吧TImage.Transparent
 
同意楼上的意见
 
PHOSHOP处理的图片只有GIF才有透明效果。IMAGE控件不支持GIF格式。所以不行。
 
image1.Transparent:=true;
 
图片都还没有透明,TRANSPARENT属性有什么用呢!
 
背景是白色的BMP文件就可以使用Transparent,我这里测试通过
 
是谁说的白色背景的图片可以啊。不行呢。老兄!
 
在D 6中可以
 
1.将图像在photoshop中将要透明的区域或颜色清除(可用魔术棒);
2.在delphi中将image的transparent设为true.
 
原先我用d5的时候也是这么做的,一样能行,白色是(ff,ff,ff),别弄错了

不是兄台机器的问题,就是兄台技术的问题。
 
TImage.Transparent := True;
 
采用D6在WIN2000下将FRom ALPHABLEND属性置为TRUE将ALPHABLENDValue置为235就可透明
 

http://dddvideo.home.sohu.com
看看
里面有一个透明窗体的示范是否合用,它作透明窗体十分优秀,甚至可以以透明窗体作动画
显示。
 
同意大家的意见.
 
在delphi中将image的transparent设为true.
但它是由要求的,他默认图片的左下点为图片的背景色,并把它透明过去。
 
一段代码,看有没有用
procedure DrawTransparentBitmap (ahdc: HDC;
Image: TImage;
xStart, yStart: Word);
var
TransparentColor: TColor;
cColor : TColorRef;
bmAndBack,
bmAndObject,
bmAndMem,
bmSave,
bmBackOld,
bmObjectOld,
bmMemOld,
bmSaveOld : HBitmap;
hdcMem,
hdcBack,
hdcObject,
hdcTemp,
hdcSave : HDC;
ptSize : TPoint;
begin
TransparentColor := Image.Picture.Bitmap.Canvas.Pixels[0,
Image.Height - 1];
TransparentColor := TransparentColor or $02000000;

hdcTemp := CreateCompatibleDC (ahdc);
SelectObject (hdcTemp, Image.Picture.Bitmap.Handle); { select the bitmap }

ptSize.x := Image.Width;
ptSize.y := Image.Height;
DPtoLP (hdcTemp, ptSize, 1); { convert from device logical points }

hdcBack := CreateCompatibleDC(ahdc);
hdcObject := CreateCompatibleDC(ahdc);
hdcMem := CreateCompatibleDC(ahdc);
hdcSave := CreateCompatibleDC(ahdc);

bmAndBack := CreateBitmap (ptSize.x, ptSize.y, 1, 1, nil);
bmAndObject := CreateBitmap (ptSize.x, ptSize.y, 1, 1, nil);

bmAndMem := CreateCompatibleBitmap (ahdc, ptSize.x, ptSize.y);
bmSave := CreateCompatibleBitmap (ahdc, ptSize.x, ptSize.y);

bmBackOld := SelectObject (hdcBack, bmAndBack);
bmObjectOld := SelectObject (hdcObject, bmAndObject);
bmMemOld := SelectObject (hdcMem, bmAndMem);
bmSaveOld := SelectObject (hdcSave, bmSave);

SetMapMode (hdcTemp, GetMapMode (ahdc));
BitBlt (hdcSave, 0, 0, ptSize.x, ptSize.y, hdcTemp, 0, 0, SRCCOPY);
cColor := SetBkColor (hdcTemp, TransparentColor);
BitBlt (hdcObject, 0, 0, ptSize.x, ptSize.y, hdcTemp, 0, 0, SRCCOPY);
SetBkColor (hdcTemp, cColor);
BitBlt (hdcBack, 0, 0, ptSize.x, ptSize.y, hdcObject, 0, 0, NOTSRCCOPY);
BitBlt (hdcMem, 0, 0, ptSize.x, ptSize.y, ahdc, xStart, yStart, SRCCOPY);
BitBlt (hdcMem, 0, 0, ptSize.x, ptSize.y, hdcObject, 0, 0, SRCAND);
BitBlt (hdcTemp, 0, 0, ptSize.x, ptSize.y, hdcBack, 0, 0, SRCAND);
BitBlt (hdcMem, 0, 0, ptSize.x, ptSize.y, hdcTemp, 0, 0, SRCPAINT);
BitBlt (ahdc, xStart, yStart, ptSize.x, ptSize.y, hdcMem, 0, 0, SRCCOPY);
BitBlt (hdcTemp, 0, 0, ptSize.x, ptSize.y, hdcSave, 0, 0, SRCCOPY);

DeleteObject (SelectObject (hdcBack, bmBackOld));
DeleteObject (SelectObject (hdcObject, bmObjectOld));
DeleteObject (SelectObject (hdcMem, bmMemOld));
DeleteObject (SelectObject (hdcSave, bmSaveOld));

DeleteDC (hdcMem);
DeleteDC (hdcBack);
DeleteDC (hdcObject);
DeleteDC (hdcSave);
DeleteDC (hdcTemp);
end;
 
把图画到窗体上
 
后退
顶部