// ...... TextAdornmentLayer textAdornmentLayer = new TextAdornmentLayer(bitmap.Width / 2, 10); mapEngine.AdornmentLayers.Add(textAdornmentLayer); // ...... class TextAdornmentLayer : AdornmentLayer { ScreenPointF screenPointToDraw = new ScreenPointF(); string strLogo = "My Own Logo"; public TextAdornmentLayer(float screenPointToDrawX, float screenPointToDrawY) : base() { this.screenPointToDraw = new ScreenPointF(screenPointToDrawX, screenPointToDrawY); } protected override void DrawCore(GeoCanvas canvas, GeographyUnit mapUnit, Collection labelsInAllLayers) { //Draw Text GeoFont geoFont = new GeoFont("Arial", 10); canvas.DrawTextWithScreenCoordinate(strLogo, geoFont, new GeoSolidBrush(GeoColor.StandardColors.Blue), screenPointToDraw.X, screenPointToDraw.Y, DrawingLevel.LevelTwo); DrawingRectangleF drawingRectangleF = canvas.MeasureText(strLogo, geoFont); //// Draw Rectangle. canvas.DrawArea( GetScreenPointFs(drawingRectangleF), new GeoPen(GeoColor.StandardColors.White, 2), new GeoSolidBrush(GeoColor.StandardColors.Transparent), DrawingLevel.LevelThree, 0, 0, PenBrushDrawingOrder.PenFirst); } private Collection GetScreenPointFs(DrawingRectangleF drawingRectangleF) { ScreenPointF[] screenPointFs = new ScreenPointF[4]; screenPointFs[0] = new ScreenPointF(screenPointToDraw.X - drawingRectangleF.Width / 2, screenPointToDraw.Y + drawingRectangleF.Height / 2); screenPointFs[1] = new ScreenPointF(screenPointToDraw.X + drawingRectangleF.Width / 2, screenPointToDraw.Y + drawingRectangleF.Height / 2); screenPointFs[2] = new ScreenPointF(screenPointToDraw.X + drawingRectangleF.Width / 2, screenPointToDraw.Y - drawingRectangleF.Height / 2); screenPointFs[3] = new ScreenPointF(screenPointToDraw.X - drawingRectangleF.Width / 2, screenPointToDraw.Y - drawingRectangleF.Height / 2); Collection result = new Collection(); result.Add(screenPointFs); return result; } }