图像处理小白问一个有关问题,关于图片透明
图像处理小白问一个问题,关于图片透明
我在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;
效果如图:
希望图没挂,~
------解决方案--------------------
我在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;
效果如图:
希望图没挂,~
------解决方案--------------------
- Delphi(Pascal) code
Img1.Transparent := True;
------解决方案--------------------
var
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;
唉,分太少了...特意帮你看了一下..