我想实现这样的功能:
Abitmap:Tbitmap;Abitmap.LoadFromStream(stream);//引入一张图片。然后在这张图上画一层半透明色,
最后把这个加了一层半透明色的图片,显示到某处,或者保存为一张新图:
self.ImageControl1.Bitmap:=Abitmap;
我尝试下面的方法,画不上呢:
Abitmap.Canvas.fill.Color:=$80CD00CD;
Abitmap.Canvas.FillEllipse(arect,0.5);请教大家应该如何实现呢???我用的是firemonkey~~
Abitmap:Tbitmap;Abitmap.LoadFromStream(stream);//引入一张图片。然后在这张图上画一层半透明色,
最后把这个加了一层半透明色的图片,显示到某处,或者保存为一张新图:
self.ImageControl1.Bitmap:=Abitmap;
我尝试下面的方法,画不上呢:
Abitmap.Canvas.fill.Color:=$80CD00CD;
Abitmap.Canvas.FillEllipse(arect,0.5);请教大家应该如何实现呢???我用的是firemonkey~~
建议使用PNGImage设置透明度,再
Bitmap.Assign(Png)
Tbitmap.transpartnecolor可以指定透明色。
var
bmp: TBitmap;
BF: BLENDFUNCTION;
W,H: Integer;
begin
bmp := TBitmap.Create;
W := AlpahRect.Right - AlpahRect.Left;
H := AlpahRect.Bottom - AlpahRect.Top;
bmp.SetSize(W,H);
bmp.Canvas.Brush.Color := Color;
bmp.Canvas.FillRect(bmp.Canvas.ClipRect);
BF.BlendOp := AC_SRC_OVER;
BF.BlendFlags := 0;
BF.AlphaFormat := 0;
BF.SourceConstantAlpha := AlphaByte;
Windows.AlphaBlend(DC,AlpahRect.Left,AlpahRect.Top,W,H,
bmp.Canvas.Handle, 0,0,Bmp.Width, Bmp.Height,BF);
bmp.Free;
end;其实代码不多
用法
DrawAlphaByColor(bmp.Canvas.Handle,Rect(0,0,bmp.width,bmp.height),clred,50)