//HSV颜色构造器 private IHsvColor getHSV(int Hue, int Saturation, int Val) { IHsvColor pColor; pColor = new HsvColorClass(); pColor.Hue = Hue; pColor.Saturation = Saturation; pColor.Value = Val; return(pColor); }
public IColor getHVS(int H = 0, int S = 0, int V = 0) { IHsvColor pHsvColor; pHsvColor = new HsvColorClass(); pHsvColor.Hue = H; pHsvColor.Saturation = S; pHsvColor.Value = V; return(pHsvColor as IColor); }
public IHsvColor Hsv(int hue, int saturation, int val) { IHsvColor pHsvC; pHsvC = new HsvColorClass(); pHsvC.Hue = hue; pHsvC.Saturation = saturation; pHsvC.Value = val; return(pHsvC); }
/// <summary> /// 输入HSV值,获取IHsvColor型值 /// </summary> /// <param name="intH">Hue</param> /// <param name="intS">Saturation</param> /// <param name="intV">Value</param> /// <returns>IHsvColor</returns> public static IHsvColor GetHsvColor(int intH, int intS, int intV) { IHsvColor hsvColor = null; if (intH < 0 || intH > 360 || intS < 0 || intS > 100 || intV < 0 || intV > 100) { return(hsvColor); } hsvColor = new HsvColorClass(); hsvColor.Hue = intH; hsvColor.Saturation = intS; hsvColor.Value = intV; return(hsvColor); }
public IHsvColor GetHsvColor(int iHue, int iSaturation, int iValue, bool bUseWinDithering) { try { IHsvColor color = null; color = new HsvColorClass(); iHue = this.CheckNumValueRegion(iHue, 0, 360); iSaturation = this.CheckNumValueRegion(iSaturation, 0, 100); iValue = this.CheckNumValueRegion(iValue, 0, 100); color.Hue = iHue; color.Saturation = iSaturation; color.Value = iValue; color.UseWindowsDithering = bUseWinDithering; return(color); } catch (Exception exception) { this.mErrOpt.ErrorOperate(this.mSubSysName, "FunFactory.ColorFun", "GetHsvColor", exception.GetHashCode().ToString(), exception.Source, exception.Message, "", "", ""); return(null); } }
/// <summary> /// Class Break Render /// </summary> /// <param name="currentLayer"></param> /// <param name="breakCount"></param> /// <author>Shen Yongyuan</author> /// <date>20091114</date> public static void ClassBreakRender(ILayer currentLayer, int breakCount, string fieldName, ref double[] Classes, ref int[] Colors, bool reverse) { //Get All Value object dataFrequency = null; object dataValues = null; ITableHistogram pTableHistogram = new BasicTableHistogramClass(); IBasicHistogram pHistogram = (IBasicHistogram)pTableHistogram; pTableHistogram.Field = fieldName; pTableHistogram.Table = (currentLayer as IGeoFeatureLayer).DisplayFeatureClass as ITable; pHistogram.GetHistogram(out dataValues, out dataFrequency); //Class IClassifyGEN pClassify = new EqualIntervalClass(); pClassify.Classify(dataValues, dataFrequency, ref breakCount); //Set Class Breaks Classes = (double[])pClassify.ClassBreaks; int ClassesCount = Classes.GetUpperBound(0); IClassBreaksRenderer pClassBreaksRenderer = new ClassBreaksRendererClass(); pClassBreaksRenderer.Field = fieldName; //Set From to Color IHsvColor pFromColor = new HsvColorClass(); pFromColor.Hue = reverse ? 105 : 353; pFromColor.Saturation = reverse ? 46 : 56; pFromColor.Value = reverse ? 76 : 92; IHsvColor pToColor = new HsvColorClass(); pToColor.Hue = reverse ? 353 : 105; pToColor.Saturation = reverse ? 56 : 46; pToColor.Value = reverse ? 92 : 76; //Get Color IAlgorithmicColorRamp pAlgorithmicCR = new AlgorithmicColorRampClass(); pAlgorithmicCR.Algorithm = esriColorRampAlgorithm.esriHSVAlgorithm; pAlgorithmicCR.FromColor = pFromColor; pAlgorithmicCR.ToColor = pToColor; pAlgorithmicCR.Size = ClassesCount; bool ok = false; pAlgorithmicCR.CreateRamp(out ok); IEnumColors pEnumColors = pAlgorithmicCR.Colors; //Set Break Count pClassBreaksRenderer.BreakCount = ClassesCount; pClassBreaksRenderer.SortClassesAscending = true; //Set Break Interval for (int lbreakIndex = 0; lbreakIndex <= ClassesCount - 1; lbreakIndex++) { IColor pColor = pEnumColors.Next(); Colors[lbreakIndex] = pColor.RGB; ISimpleFillSymbol pSimpleFillS = new SimpleFillSymbolClass(); pSimpleFillS.Color = pColor; pSimpleFillS.Style = esriSimpleFillStyle.esriSFSSolid; pClassBreaksRenderer.set_Symbol(lbreakIndex, (ISymbol)pSimpleFillS); pClassBreaksRenderer.set_Break(lbreakIndex, Classes[lbreakIndex + 1]); } //Set Render (currentLayer as IGeoFeatureLayer).Renderer = pClassBreaksRenderer as IFeatureRenderer; }
private void polygonClassificationDye(ILayer pLayer) { IGeoFeatureLayer pGeoFeatureLayer; ITable pTable; IClassifyGEN pClassify; ITableHistogram pTableHistogram; IBasicHistogram pHistogram; object dataFrequency; object dataValues; double[] Classes; int ClassesCount; IClassBreaksRenderer pClassBreakRenderer; IHsvColor pFromColor; IHsvColor pToColor; IAlgorithmicColorRamp pAIgorithmicCR; IEnumColors pEnumColors; bool ok; IColor pColor; ISimpleFillSymbol pSimpleFillS; int IbreakIndex; string strPopFiled = cbField1.Text; int numDesiredClasses; try { numDesiredClasses = int.Parse(textBox1.Text.ToString()); } catch { MessageBox.Show("请输入分级个数"); return; } IMap pMap = axMapControl1.Map; pMap.ReferenceScale = 0; pGeoFeatureLayer = pLayer as IGeoFeatureLayer; //从pTable的id字段中得到信息给dataValues和dataFrequency两个数组 pTable = (ITable)pGeoFeatureLayer.FeatureClass; pTableHistogram = new BasicTableHistogramClass(); pHistogram = (IBasicHistogram)pTableHistogram; pTableHistogram.Field = strPopFiled; pTableHistogram.Table = pTable; pHistogram.GetHistogram(out dataValues, out dataFrequency); //下面是分级方法,用于根据获取的值计算出符号要求的数据 pClassify = new EqualIntervalClass(); try { pClassify.Classify(dataValues, dataFrequency, ref numDesiredClasses); } catch (Exception ex) { MessageBox.Show(ex.Message); } //返回一个数组 Classes = (double[])pClassify.ClassBreaks; ClassesCount = Classes.GetUpperBound(0); pClassBreakRenderer = new ClassBreaksRendererClass(); pClassBreakRenderer.Field = strPopFiled; //设置着色对象的分级数目 pClassBreakRenderer.BreakCount = ClassesCount; pClassBreakRenderer.SortClassesAscending = true; //产生分级着色需要的颜色带对象的起止颜色对象 pFromColor = new HsvColorClass(); pFromColor.Hue = 60; pFromColor.Saturation = 100; pFromColor.Value = 96; pToColor = new HsvColorClass(); pToColor.Hue = 0; pToColor.Saturation = 100; pToColor.Value = 96; //产生颜色带对象 pAIgorithmicCR = new AlgorithmicColorRampClass(); pAIgorithmicCR.Algorithm = esriColorRampAlgorithm.esriHSVAlgorithm; pAIgorithmicCR.FromColor = pFromColor; pAIgorithmicCR.ToColor = pToColor; pAIgorithmicCR.Size = ClassesCount; pAIgorithmicCR.CreateRamp(out ok); //获得颜色 pEnumColors = pAIgorithmicCR.Colors; //分类着色对象中的symbol和break的下标是从0开始 for (IbreakIndex = 0; IbreakIndex <= ClassesCount - 1; IbreakIndex++) { pColor = pEnumColors.Next(); pSimpleFillS = new SimpleFillSymbolClass(); pSimpleFillS.Color = pColor; pSimpleFillS.Style = esriSimpleFillStyle.esriSFSSolid; //这里是构造函数不同颜色着色的方法 pClassBreakRenderer.set_Symbol(IbreakIndex, (ISymbol)pSimpleFillS); //着色对象的断点 pClassBreakRenderer.set_Break(IbreakIndex, Classes[IbreakIndex + 1]); } pGeoFeatureLayer.Renderer = (IFeatureRenderer)pClassBreakRenderer; axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); }
public void GraduatedColors(IFeatureLayer pfeatLyr, string sFieldName, int numclasses) { IGeoFeatureLayer pGeoFeatureL = pfeatLyr as IGeoFeatureLayer; object dataFrequency; object dataValues; bool ok; int breakIndex; ITable pTable = pGeoFeatureL.FeatureClass as ITable;//各个字段变成一个表 ITableHistogram pTableHistogram = new BasicTableHistogramClass(); IBasicHistogram pBasicHistogram = (IBasicHistogram)pTableHistogram; pTableHistogram.Field = sFieldName; pTableHistogram.Table = pTable; pBasicHistogram.GetHistogram(out dataValues, out dataFrequency);//获取渲染值及其出现的频率 IClassifyGEN pClassify = new EqualIntervalClass(); pClassify.Classify(dataValues, dataFrequency, ref numclasses);//进行等级划分 double[] Classes = pClassify.ClassBreaks as double[]; int classescount = Classes.GetUpperBound(0); IClassBreaksRenderer pClassBreaksRenderer = new ClassBreaksRendererClass(); pClassBreaksRenderer.Field = sFieldName; //分段字段 pClassBreaksRenderer.BreakCount = classescount; //设置分级数目 pClassBreaksRenderer.SortClassesAscending = true; //分机后的图例是否按升级顺序排列 //分级颜色带的开始颜色和结束颜色(即分级颜色在此范围内) IHsvColor pFromColor = new HsvColorClass(); //起始颜色 pFromColor.Hue = 0; //黄色 pFromColor.Saturation = 50; pFromColor.Value = 96; IHsvColor ptocolor = new HsvColorClass(); //终止颜色 ptocolor.Hue = 80; //不知道什么颜色 ptocolor.Saturation = 100; ptocolor.Value = 96; //产生颜色带对象 IAlgorithmicColorRamp pAlgorithmicColorRamp = new AlgorithmicColorRampClass(); pAlgorithmicColorRamp.Algorithm = esriColorRampAlgorithm.esriHSVAlgorithm; pAlgorithmicColorRamp.FromColor = pFromColor; pAlgorithmicColorRamp.ToColor = ptocolor; pAlgorithmicColorRamp.Size = classescount; pAlgorithmicColorRamp.CreateRamp(out ok); //获得颜色 IEnumColors pEnumColors = pAlgorithmicColorRamp.Colors; //symbol和break下标从0开始 for (breakIndex = 0; breakIndex <= classescount - 1; breakIndex++) { IColor pColor = pEnumColors.Next(); switch (pGeoFeatureL.FeatureClass.ShapeType) { case esriGeometryType.esriGeometryPolygon: { ISimpleFillSymbol pSimpleFills = new SimpleFillSymbolClass(); pSimpleFills.Color = pColor; pSimpleFills.Style = esriSimpleFillStyle.esriSFSSolid; pClassBreaksRenderer.set_Symbol(breakIndex, (ISymbol)pSimpleFills); //设置填充符号 pClassBreaksRenderer.set_Break(breakIndex, Classes[breakIndex + 1]); //设定每一分级的分级断点 break; } case esriGeometryType.esriGeometryPolyline: { ISimpleLineSymbol pSimplelines = new SimpleLineSymbolClass(); pSimplelines.Color = pColor; pClassBreaksRenderer.set_Symbol(breakIndex, (ISymbol)pSimplelines); //设置填充符号 pClassBreaksRenderer.set_Break(breakIndex, Classes[breakIndex + 1]); //设定每一分级的分级断点 break; } case esriGeometryType.esriGeometryPoint: { ISimpleMarkerSymbol pSimplemaker = new SimpleMarkerSymbolClass(); pSimplemaker.Color = pColor; pClassBreaksRenderer.set_Symbol(breakIndex, (ISymbol)pSimplemaker); //设置填充符号 pClassBreaksRenderer.set_Break(breakIndex, Classes[breakIndex + 1]); //设定每一分级的分级断点 break; } } } pGeoFeatureL.Renderer = (IFeatureRenderer)pClassBreaksRenderer; axMapControl1.Refresh(); axTOCControl1.Update(); }
private IHsvColor getHsvColor(int hue, int saturation, int value) { IHsvColor pHsvColor = new HsvColorClass(); pHsvColor.Hue = hue; pHsvColor.Saturation = saturation; pHsvColor.Value = value; return pHsvColor; }
void ClassifyColor() { IGeoFeatureLayer geoFeatureLayer = mapControl.Map.get_Layer(17) as IGeoFeatureLayer; string a = geoFeatureLayer.Name; object dataFrequency, dataValues; ITableHistogram tableHistogram = new BasicTableHistogramClass(); IBasicHistogram basicHistogram = (IBasicHistogram)tableHistogram; tableHistogram.Field = cmbSelField.Text; tableHistogram.Table = geoFeatureLayer.FeatureClass as ITable; basicHistogram.GetHistogram(out dataValues, out dataFrequency); IClassifyGEN classifyGEN = new EqualIntervalClass(); classifyGEN.Classify(dataValues, dataFrequency, Convert.ToInt32(cmbnumclasses.Text)); double[] classes = classifyGEN.ClassBreaks as double[]; int classesCount = classes.GetUpperBound(0); IClassBreaksRenderer classBreaksRenderer = new ClassBreaksRendererClass(); classBreaksRenderer.Field = cmbSelField.Text; classBreaksRenderer.BreakCount = classesCount; classBreaksRenderer.SortClassesAscending = true; IHsvColor fromColor = new HsvColorClass(); fromColor.Hue = 0; fromColor.Saturation = 50; fromColor.Value = 96; IHsvColor toColor = new HsvColorClass(); toColor.Hue = 80; toColor.Saturation = 100; toColor.Value = 96; bool ok; //产生色带 IAlgorithmicColorRamp algorithmicCR = new AlgorithmicColorRampClass(); algorithmicCR.Algorithm = esriColorRampAlgorithm.esriHSVAlgorithm; algorithmicCR.FromColor = fromColor; algorithmicCR.ToColor = toColor; algorithmicCR.Size = classesCount; algorithmicCR.CreateRamp(out ok); //获得颜色 IEnumColors enumColors = algorithmicCR.Colors; for (int breakIndex = 0; breakIndex <= classesCount - 1; breakIndex++) { IColor color = enumColors.Next(); ISimpleFillSymbol simpleFill = new SimpleFillSymbolClass(); simpleFill.Color = color; simpleFill.Style = esriSimpleFillStyle.esriSFSSolid; classBreaksRenderer.set_Symbol(breakIndex, (ISymbol)simpleFill); classBreaksRenderer.set_Break(breakIndex, classes[breakIndex + 1]); } geoFeatureLayer.Renderer = (IFeatureRenderer)classBreaksRenderer; mapControl.Refresh(); mapControl.ActiveView.Refresh(); tocControl.Update(); }
public IHsvColor Hsv(int hue, int saturation, int val) { IHsvColor pHsvC; pHsvC = new HsvColorClass(); pHsvC.Hue = hue; pHsvC.Saturation = saturation; pHsvC.Value = val; return pHsvC; }