function tMarkerUtils.Make_MapPoint(sChar: string; aColor: tColor = clBlue; aStrokeColor: tColor = clBlack): string; var origin, innerL, midL, midR, lft, tp, rgt, innerR : TPoint; radius, hgt : integer; // PaintBox: TPaintBox; BtMp : TBitmap; begin radius := 10; hgt := 28; origin.X := 11; origin.Y := 30; //control points innerL.X := origin.X; innerL.Y := origin.Y - (hgt - radius) div 3; midL.X := origin.X - radius; midL.Y := origin.Y - 2*((hgt - radius) div 3); //top circle lft.X := origin.X - radius; lft.Y := origin.Y - (hgt - radius); tp.X := origin.X; tp.Y := origin.Y - hgt; rgt.X := origin.X + radius; rgt.Y := lft.Y; //control points midR.X := origin.X + radius; midR.Y := midL.Y; innerR.X := origin.X; innerR.Y := innerL.Y; // PaintBox:= TPaintBox.Create(nil); BtMp := TBitmap.Create; try with BtMp do begin Width := 25; Height := 35; with Canvas do begin Brush.Color := clFuchsia; Brush.Style := bsSolid; Pen.Color := clBlack; Pen.Width := 2; FillRect(Rect(0, 0, Width, Height)); PolyBezier([origin, innerL, midL, lft]); Arc(lft.X, tp.Y, rgt.X, rgt.Y + radius, rgt.X, rgt.Y, lft.X, lft.Y); PolyBezier([rgt, midR, innerR, origin]); Brush.Color := clYellow; FloodFill(origin.X, origin.Y - radius, Canvas.Pen.Color, TFillStyle.fsBorder); end; Transparent:= true; TransparentColor := clFuchsia; // <<-Absichtlich andere Farbe als Brush.Color !!! end; // PaintBox.Canvas.Draw(2, 2, BtMp); BtMp.TransparentMode := tmAuto; // PaintBox.Canvas.Draw(100, 50, BtMp); Result := GetBase64Image(BtMp); finally BtMp.Free; // PaintBox.Free; end; end;