//////////////////////////////////////////////////////////////////////////// //--------------------------------- REVISIONS ------------------------------ // Date Name Tracking # Description // --------- ------------------- ------------- ---------------------- // 21JUN2009 James Shen Initial Creation //////////////////////////////////////////////////////////////////////////// /** * draw a region. * @param mapPen pen for the border of the region. * @param mapBrush brush to fill the region. * @param region the polygon object. */ private void DrawRegion(MapPen mapPen, MapBrush mapBrush, GeoPolygon region) { Pen pen = new Pen(new Color(mapPen.Color, false), mapPen.Width); TextureBrush brush = GetImagePatternBrush(mapBrush); ArrayList clippedPts = _sutherlandHodgman.ClipRegion(region.GetPoints()); GeoPoint[] screenPts = FromLatLngToMapPixel(clippedPts); if (screenPts.Length > 2) { { int[] xpoints = new int[screenPts.Length]; int[] ypoints = new int[screenPts.Length]; for (int i = 0; i < screenPts.Length; i++) { xpoints[i] = (int)screenPts[i].X; ypoints[i] = (int)screenPts[i].Y; } Polygon polygon = new Polygon { Xpoints = xpoints, Ypoints = ypoints, NumOfNpoints = xpoints.Length }; if (mapBrush.Pattern == 2) { SharedGraphics2D.SetPenAndBrush(pen, brush); SharedGraphics2D.DrawPolygon(null, polygon); SharedGraphics2D.FillPolygon(null, polygon); } else { SharedGraphics2D.SetDefaultPen(pen); SharedGraphics2D.DrawPolygon(null, polygon); } } } }
//////////////////////////////////////////////////////////////////////////// //--------------------------------- REVISIONS ------------------------------ // Date Name Tracking # Description // --------- ------------------- ------------- ---------------------- // 21JUN2009 James Shen Initial Creation //////////////////////////////////////////////////////////////////////////// /** * get a texture brush based on region's brush attributes. * @param brush the map brush object. * @return the texture brush to used for the map brush. */ private TextureBrush GetImagePatternBrush(MapBrush brush) { switch (brush.Pattern) { case 1: break; case 2: _imagePatternGraphics.SetColor(brush.ForeColor); _imagePatternGraphics.FillRect( 0, 0, IMAGE_PATERN_WIDTH, IMAGE_PATERN_WIDTH); break; case 3: case 19: case 20: case 21: case 22: case 23: _imagePatternGraphics.SetColor(brush.BackColor); _imagePatternGraphics.FillRect( 0, 0, IMAGE_PATERN_WIDTH, IMAGE_PATERN_WIDTH); for (int i = 0; i < 4; i++) { _imagePatternGraphics.DrawLine(0, i * 4, IMAGE_PATERN_WIDTH, i * 4); } break; case 4: case 24: case 25: case 26: case 27: case 28: _imagePatternGraphics.SetColor(brush.BackColor); _imagePatternGraphics.FillRect( 0, 0, IMAGE_PATERN_WIDTH, IMAGE_PATERN_WIDTH); _imagePatternGraphics.SetColor(brush.ForeColor); for (int i = 0; i < 4; i++) { _imagePatternGraphics.DrawLine(i * 4, 0, i * 4, IMAGE_PATERN_WIDTH); } break; case 5: case 29: case 30: case 31: case 32: case 33: _imagePatternGraphics.SetColor(brush.BackColor); _imagePatternGraphics.FillRect( 0, 0, IMAGE_PATERN_WIDTH, IMAGE_PATERN_WIDTH); _imagePatternGraphics.SetColor(brush.ForeColor); for (int i = 0; i < 8; i++) { _imagePatternGraphics.DrawLine(0, i * 4, i * 4, 0); } break; case 6: case 34: case 35: case 36: case 37: case 38: _imagePatternGraphics.SetColor(brush.BackColor); _imagePatternGraphics.FillRect(0, 0, IMAGE_PATERN_WIDTH, IMAGE_PATERN_WIDTH); _imagePatternGraphics.SetColor(brush.ForeColor); for (int i = 0; i < 8; i++) { _imagePatternGraphics.DrawLine(0, IMAGE_PATERN_WIDTH - i * 4, i * 4, 0); } break; case 15: case 16: case 17: case 18: case 48: case 49: case 50: case 51: case 53: _imagePatternGraphics.SetColor(brush.BackColor); _imagePatternGraphics.FillRect(0, 0, IMAGE_PATERN_WIDTH, IMAGE_PATERN_WIDTH); _imagePatternGraphics.SetColor(brush.ForeColor); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { _imagePatternGraphics.FillRect(i * 4, j * 4, 1, 1); } } break; default: _imagePatternGraphics.SetColor(brush.BackColor); _imagePatternGraphics.FillRect(0, 0, IMAGE_PATERN_WIDTH, IMAGE_PATERN_WIDTH); _imagePatternGraphics.SetColor(brush.ForeColor); for (int i = 0; i < 4; i++) { _imagePatternGraphics.DrawLine(0, i * 4, IMAGE_PATERN_WIDTH, i * 4); _imagePatternGraphics.DrawLine(i * 4, 0, i * 4, IMAGE_PATERN_WIDTH); } break; } int[] rgbData = _imagePattern.GetRGB(); TextureBrush textureBrush = new TextureBrush(rgbData, IMAGE_PATERN_WIDTH, IMAGE_PATERN_WIDTH); return textureBrush; }
//////////////////////////////////////////////////////////////////////////// //--------------------------------- REVISIONS ------------------------------ // Date Name Tracking # Description // --------- ------------------- ------------- ---------------------- // 21JUN2009 James Shen Initial Creation //////////////////////////////////////////////////////////////////////////// /** * get a texture brush based on region's brush attributes. * @param brush the map brush object. * @return the texture brush to used for the map brush. */ private TextureBrush GetImagePatternBrush(MapBrush brush) { switch (brush.Pattern) { case 1: break; case 2: _imagePatternGraphics.SetColor(brush.ForeColor); _imagePatternGraphics.FillRect(0, 0, IMAGE_PATERN_WIDTH, IMAGE_PATERN_WIDTH); break; case 3: case 19: case 20: case 21: case 22: case 23: _imagePatternGraphics.SetColor(brush.BackColor); _imagePatternGraphics.FillRect(0, 0, IMAGE_PATERN_WIDTH, IMAGE_PATERN_WIDTH); for (int i = 0; i < 4; i++) { _imagePatternGraphics.DrawLine(0, i * 4, IMAGE_PATERN_WIDTH, i * 4); } break; case 4: case 24: case 25: case 26: case 27: case 28: _imagePatternGraphics.SetColor(brush.BackColor); _imagePatternGraphics.FillRect(0, 0, IMAGE_PATERN_WIDTH, IMAGE_PATERN_WIDTH); _imagePatternGraphics.SetColor(brush.ForeColor); for (int i = 0; i < 4; i++) { _imagePatternGraphics.DrawLine(i * 4, 0, i * 4, IMAGE_PATERN_WIDTH); } break; case 5: case 29: case 30: case 31: case 32: case 33: _imagePatternGraphics.SetColor(brush.BackColor); _imagePatternGraphics.FillRect(0, 0, IMAGE_PATERN_WIDTH, IMAGE_PATERN_WIDTH); _imagePatternGraphics.SetColor(brush.ForeColor); for (int i = 0; i < 8; i++) { _imagePatternGraphics.DrawLine(0, i * 4, i * 4, 0); } break; case 6: case 34: case 35: case 36: case 37: case 38: _imagePatternGraphics.SetColor(brush.BackColor); _imagePatternGraphics.FillRect(0, 0, IMAGE_PATERN_WIDTH, IMAGE_PATERN_WIDTH); _imagePatternGraphics.SetColor(brush.ForeColor); for (int i = 0; i < 8; i++) { _imagePatternGraphics.DrawLine(0, IMAGE_PATERN_WIDTH - i * 4, i * 4, 0); } break; case 15: case 16: case 17: case 18: case 48: case 49: case 50: case 51: case 53: _imagePatternGraphics.SetColor(brush.BackColor); _imagePatternGraphics.FillRect(0, 0, IMAGE_PATERN_WIDTH, IMAGE_PATERN_WIDTH); _imagePatternGraphics.SetColor(brush.ForeColor); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { _imagePatternGraphics.FillRect(i * 4, j * 4, 1, 1); } } break; default: _imagePatternGraphics.SetColor(brush.BackColor); _imagePatternGraphics.FillRect(0, 0, IMAGE_PATERN_WIDTH, IMAGE_PATERN_WIDTH); _imagePatternGraphics.SetColor(brush.ForeColor); for (int i = 0; i < 4; i++) { _imagePatternGraphics.DrawLine(0, i * 4, IMAGE_PATERN_WIDTH, i * 4); _imagePatternGraphics.DrawLine(i * 4, 0, i * 4, IMAGE_PATERN_WIDTH); } break; } int[] rgbData = _imagePattern.GetRGB(); TextureBrush textureBrush = new TextureBrush(rgbData, IMAGE_PATERN_WIDTH, IMAGE_PATERN_WIDTH); return(textureBrush); }