我在TImage控件中用圆角矩形区域画了一张图片,但是图片的圆角部分还是白色的,如何能把这部分变透明呢,TIMAGE的透明属性我是设了的?紧急求助!
代码如下:
var
bmp:TBitmap;
Rhandle:HRGN;
begin
bmp:=TBitmap.Create;
bmp.LoadFromFile(C_BMPFILE); Rhandle:=CreateRoundRectRgn(0,0,img1.Width,img1.Height,20,20);
SelectclipRgn(img1.Canvas.Handle,rHandle);
img1.Canvas.Draw(0,0,bmp);
deleteObject(Rhandle);
end;
效果如图:
希望图没挂,~
代码如下:
var
bmp:TBitmap;
Rhandle:HRGN;
begin
bmp:=TBitmap.Create;
bmp.LoadFromFile(C_BMPFILE); Rhandle:=CreateRoundRectRgn(0,0,img1.Width,img1.Height,20,20);
SelectclipRgn(img1.Canvas.Handle,rHandle);
img1.Canvas.Draw(0,0,bmp);
deleteObject(Rhandle);
end;
效果如图:
希望图没挂,~
解决方案 »
- memo中出多来的属性
- dear all :我想判断字符串'hello' 是否在集合 ['hello','world','god']里面,用了如下语句,错误的说,请赐教
- 如何在Delphi5中调用WebService?
- 再问图片中插入文字
- 急! 求助关于DELPHI开发ACTIVEX COM ,ASP不能调用!请教高人!
- TreeView怎么取值???
- 终于搞定了报销的单据了,心情好,所以决定散分
- 同志们休息一下,打个谜语。
- 我的delphi5在win2000下执行调试时死机是怎么回事?98下正常
- 想办一份Delphi的电子杂志!!!有谁志同道合???
- 散分一下~顺便问下有没有使用VGScene的同学们!
- 关于TDBGRID显示问题求助
Img1.Transparent := True;
这个应该是要求图片有透明色的,但是这张图片没有
bmp:TBitmap;
bmpBuffer:TBitmap;
Rhandle:HRGN;
begin
bmp:=TBitmap.Create;
bmpBuffer:=TBitmap.Create;
bmp.LoadFromFile('areo.bmp');
Image1.Transparent:=True;
Rhandle:=CreateRoundRectRgn(0,0,Image1.Width,Image1.Height,20,20);
bmpBuffer.SetSize(Image1.Width,Image1.Height);
bmpBuffer.Canvas.Brush.Color:=clBlack;
bmpBuffer.Canvas.Brush.Style:=bsSolid;
bmpBuffer.Canvas.FillRect(Rect(0,0,Image1.Width,Image1.Height));
try
SelectClipRgn(bmpBuffer.Canvas.Handle,rHandle);
bmpBuffer.Canvas.Draw(0,0,bmp);
bmpBuffer.Canvas.Brush.Style:=bsClear;
Image1.Picture.Assign(bmpBuffer);
finally
DeleteObject(Rhandle);
end;
bmpBuffer.Free;
bmp.Free;
唉,分太少了...特意帮你看了一下..
img1.Picture.Bitmap.TransparentColor := clWhite;
img1.Picture.Bitmap.Transparent := True;
这些都去试试吧!
透明区域底色填充为黑色,
将图片绘制缓存上,
再将TImage的Transparent设置为True,
将缓存位图赋给TImage的Picture ....
暂时先用老师的方法了~
PS:CSDN还是很有爱的,再次感谢2位大虾。
bmp:TBitmap;
Rhandle:HRGN;
begin
bmp:=TBitmap.Create;
bmp.LoadFromFile(C_BMPFILE);
img1.Canvas.Brush.Color:=clRed;
img1.Canvas.FillRect(img1.ClientRect);
Rhandle:=CreateRoundRectRgn(0,0,img1.Width,img1.Height,20,20);
SelectclipRgn(img1.Canvas.Handle,rHandle);
Canvas.Draw(img1.Left,img1.Top,bmp);
img1.Canvas.Draw(0,0,bmp);
deleteObject(Rhandle);
img1.Canvas.Brush.Style := bsClear;
img1.Picture.Bitmap.TransparentColor := clRed;
img1.Picture.Bitmap.Transparent := True;
img1.Transparent:=True;这种方法也可以,其实跟gobiz的方法一样,显示填充img1的颜色为clred,然后再将透明色设置为clred,同样搞定了,又学到了一点~