Common_CustomRenderers_CSharp\App_Code\LineColorRenderer.cs
// Copyright 2010 ESRI // // All rights reserved under the copyright laws of the United States // and applicable international laws, treaties, and conventions. // // You may freely redistribute and use this sample code, with or // without modification, provided you include the original copyright // notice and use restrictions. // // See the use restrictions. // namespace ESRI.ADF.Samples.Renderers { /// <summary> /// Renders linear graphic features with color and thickness determined by designated attributes /// </summary> [System.Serializable] public class LineColorRenderer : ESRI.ADF.Samples.Renderers.RendererBase { #region Public Properties private string lineColorColumn = "Color"; /// <summary> /// Name of the column that will determine a feature's color /// </summary> public string LineColorColumn { get { return lineColorColumn; } set { lineColorColumn = value; } } private string lineThicknessColumn = "Width"; /// <summary> /// Name of the column that will determine the feature's line thickness /// </summary> public string LineThicknessColumn { get { return lineThicknessColumn; } set { lineThicknessColumn = value; } } #endregion #region IRenderer Members /// <summary> /// Main part of the IRenderer interface, within which a feature encapsulating the specified DataRow is to be /// rendered on the specified graphics surface. The geometry instance has already been transformed to screen /// coordinate, so we don't have to worry about that here. /// </summary> /// <param name="row">row containing the feature's data</param> /// <param name="graphics">GDI+ surface on which to render the feature</param> /// <param name="geometryColumn">column containing the feature's geometry</param> public override void Render(System.Data.DataRow row, System.Drawing.Graphics graphics, System.Data.DataColumn geometryColumn) { // Validate method input if (row == null || graphics == null || geometryColumn == null) return; // Validate input geometry ESRI.ArcGIS.ADF.Web.Geometry.Geometry adfGeometry = row[geometryColumn] as ESRI.ArcGIS.ADF.Web.Geometry.Geometry; if (adfGeometry == null) return; // Initialize line color and thickness System.Drawing.Color lineColor = System.Drawing.Color.Black; float lineWidth = 1; // Get the feature's line thickness and color as specified by its attributes if (row.Table.Columns.Contains(this.LineThicknessColumn)) { float.TryParse(row[this.LineThicknessColumn].ToString(), out lineWidth); } if (row.Table.Columns.Contains(this.LineColorColumn) && row[this.LineColorColumn] is System.Drawing.Color) { lineColor = (System.Drawing.Color)row[LineColorColumn]; } // Draw the feature if (adfGeometry is ESRI.ArcGIS.ADF.Web.Geometry.Polygon) { Utility.DrawPolygon(graphics, adfGeometry as ESRI.ArcGIS.ADF.Web.Geometry.Polygon, lineColor, lineWidth); } else if (adfGeometry is ESRI.ArcGIS.ADF.Web.Geometry.Polyline) { Utility.DrawPolyline(graphics, adfGeometry as ESRI.ArcGIS.ADF.Web.Geometry.Polyline, lineColor, lineWidth); } } #endregion } }