完成后就是这么个效果:
代码
uses TABGRAUtils, TADrawUtils, TADrawerCanvas, BGRABitmapTypes, TADrawerBGRA,
BGRATextFX, BGRAGradientScanner;
。。。
procedure TForm1.BGRAVirtualScreen1Redraw(Sender: TObject; Bitmap: TBGRABitmap);
var
bmp: TBGRABitmap;
id: IChartDrawer;
rp: TChartRenderingParams;
fontRenderer: TBGRATextEffectFontRenderer;
gold: TBGRAGradientScanner;
//olColor: TBGRAPixel;
begin
bmp := TBGRABitmap.Create(BGRAVirtualScreen1.Width, BGRAVirtualScreen1.Height);
fontRenderer:= TBGRATextEffectFontRenderer.Create;
fontRenderer.ShadowVisible := true; //adds a shadow
// 字体外边颜色
//olColor.red := $FFFFFFFF;
//olColor.green := $000000FF;
//olColor.blue := $000000FF;
//olColor.alpha:= $FFFFFFFF;
//fontRenderer.OutlineColor := olColor;
fontRenderer.OutlineVisible := false; //show the outline
gold := TBGRAGradientScanner.Create(CSSGold,CSSGoldenrod,gtLinear,PointF(0,0),PointF(20,20),true,true);
fontRenderer.OutlineTexture := gold; //define the texture used for the outline
fontRenderer.OuterOutlineOnly := true; //just the outer pixels of the text
bmp.FontRenderer := fontRenderer; //gives the FontRenderer to the image (which becomes the owner of the renderer)
Chart1.DisableRedrawing;
try
id := TBGRABitmapDrawer.Create(bmp);
id.DoGetFontOrientation := @CanvasGetFontOrientationFunc;
rp := Chart1.RenderingParams;
Chart1.Draw(id, Rect(0, 0, BGRAVirtualScreen1.Width, BGRAVirtualScreen1.Height));
Chart1.RenderingParams := rp;
Bitmap.PutImage(0,0,bmp,dmDrawWithTransparency);
finally
Chart1.EnableRedrawing;
bmp.Free;
gold.Free;
end;
end;