====== Source Code WebEditionSample GraphicLogoAdornmentLayer CS 100317.zip ======
====GraphicLogoAdornmentLayer.cs====
using System.Collections.ObjectModel;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using ThinkGeo.MapSuite.Core;
namespace GraphicLogoAdornmentWeb
{
class GraphicLogoAdornmentLayer: AdornmentLayer
{
Bitmap logoImage;
public GraphicLogoAdornmentLayer()
: base()
{
Location = AdornmentLocation.LowerRight;
}
public Bitmap LogoImage
{
get { return logoImage; }
set { logoImage = value; }
}
protected override void DrawCore(GeoCanvas canvas, Collection labelsInAllLayers)
{
if (IsVisible)
{
ScreenPointF screenPointF = GetDrawingLocation(canvas, logoImage.Width, logoImage.Height);
// If the canvas happens to be using GDI+ then we can do an optimization and skip
// the GeoImage. Otherwise we go the longer route in the else statement
if (canvas is GdiPlusGeoCanvas)
{
GdiPlusGeoCanvas gdiPlusGeoCanvas = canvas as GdiPlusGeoCanvas;
gdiPlusGeoCanvas.DrawScreenImageWithoutScaling(logoImage, screenPointF.X + logoImage.Width * 0.5f, screenPointF.Y + logoImage.Height * 0.5f, DrawingLevel.LevelOne, 0, 0, 0);
}
else
{
// Here we have to convert the stream to a TIFF to be used in the GeoImage
Stream stream = new MemoryStream();
logoImage.Save(stream, ImageFormat.Tiff);
GeoImage geoImage = new GeoImage(stream);
canvas.DrawScreenImageWithoutScaling(geoImage, screenPointF.X + logoImage.Width * 0.5f, screenPointF.Y + logoImage.Height * 0.5f, DrawingLevel.LevelOne, 0, 0, 0);
}
}
}
}
}
====TestForm.aspx.cs====
using System;
using System.Configuration;
using System.Drawing;
using ThinkGeo.MapSuite.Core;
using ThinkGeo.MapSuite.WebEdition;
namespace GraphicLogoAdornmentWeb
{
public partial class TestForm : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Map1.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.FromHtml("#E5E3DF"));
Map1.CurrentExtent = new RectangleShape(-136,52,-30,2);
Map1.MapUnit = GeographyUnit.DecimalDegree;
Map1.MapTools.OverlaySwitcher.Enabled = true;
Map1.MapTools.MouseCoordinate.Enabled = true;
//LayerOverlay for geographic layers such as countries.
LayerOverlay layerOverlay = new LayerOverlay("WorldOverlay", false, TileType.SingleTile);
layerOverlay.TransitionEffect = TransitionEffect.None;
string shapePath = MapPath("App_Data
Countries02.shp");
ShapeFileFeatureLayer Layer1 = new ShapeFileFeatureLayer(shapePath);
Layer1.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.Country1;
Layer1.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
layerOverlay.Layers.Add("Countries", Layer1);
//LayerOverlay for adornment layers such as GraphicLogoAdornmentLayer
LayerOverlay adornmentOverlay = new LayerOverlay("adornemntOverlay", false, TileType.SingleTile);
adornmentOverlay.TransitionEffect = TransitionEffect.None;
string logoPath = MapPath("App_Data
logo.png");
GraphicLogoAdornmentLayer graphicLogoAdornmentLayer = new GraphicLogoAdornmentLayer();
graphicLogoAdornmentLayer.Location = AdornmentLocation.LowerLeft;
graphicLogoAdornmentLayer.LogoImage = new Bitmap(logoPath);
adornmentOverlay.Layers.Add(graphicLogoAdornmentLayer);
Map1.CustomOverlays.Add(layerOverlay);
Map1.CustomOverlays.Add(adornmentOverlay);
}
}
}
}
====TestForm.aspx====
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestForm.aspx.cs" Inherits="GraphicLogoAdornmentWeb.TestForm" %>
<%@ Register Assembly="WebEdition" Namespace="ThinkGeo.MapSuite.WebEdition" TagPrefix="cc1" %>
Graphic Logo Adornment Layer