ArcGIS Engine渲染
符号化之Renderer( 渲染)体系
ArcGIS Engine9.3对GIS数据的符号化分为矢量数据渲染和栅格数据渲染两大类。接下来分别介绍FeatureRender和RasterRender。
1.FeatureRender对象
FeatureRenderer是一个抽象类,它有15个子类负责进行不同类型的着色运算。它们都实现了IFeatureRenderer接口,这个接口定义了进行要素图层符号化的公共属性和方法。
可以通过IGeoFeatureLayer::Renderer属性获得一个要素图层的符号化对象
表四
要素符号化类型 | 描述 |
SimpleRender | 简单符号化 |
UniqueValueRender | 唯一值符号化 |
BiUniqueValueRender | 双变量唯一值符号化 |
ChartRender | 图表符号化 |
ClassBreaksRenderer | 分类等级符号化 |
DotDensityRenderer | 点密度符号化 |
ProportionalSymbolRenderer | 根据属性值设置符号大小进行符号化 |
ScaleDependentRenderer | 依比例尺符号化 |
RepresentationRenderer | 制图表达符号化 |
CoTrackSymbologyRenderer(TrackingAnalyst) | 轨迹符号化(应用于TrackingAnaylyst扩展模块) |
EnhancedInfoRenderder(TrackingAnalyst) | 增强信息符号化(应用于TrackingAnaylyst扩展模块) |
UniqueValueTextRenderer(TrackingAnalyst) | 唯一值文本符号化(应用于TrackingAnaylyst扩展模块) |
NAStopRenderer(NetworkAnalyst) | 停止符号化(应用于网络分析扩展模块) |
FeatureVertexRenderer(SurveyExt) | 要素定点符号化(应用于测量分析扩展模块) |
SharedEdgeRenderer(EditorExt) | 用于绘制拓扑元素 |
常用的要素符号化类型主要有以下6种类型,如图13所示:
图13
由于篇幅有限不再对每一种符号化类型的使用进行讲解,在后边的实例中将为读者演示如何进行唯一值符号化。
2.RasterRender对象
RasterRender是一个抽象类,它有15个子类负责进行不同类型的着色运算。它们都实现了IRasterRender接口,这个接口定义了栅格图层符号化的公共属性和方法。可以通过IRasterLayer::Renderer属性获得一个栅格图层的符号化对象。
要素符号化类型 | 描述 |
RasterRGBRenderer | 栅格RGB符号化 |
RasterUniqueValueRenderer | 唯一值符号化 |
RasterColormapRenderer | 双变量唯一值符号化 |
RasterClassifyColorRampRenderer | 图表符号化 |
RasterStretchColorRampRenderer | 分类等级符号化 |
RasterDiscreteColorRenderer | 点密度 符号化 |
栅格符号化类型结构图如图14所示:
图14
以下代码片段是对一个RasterLayer进行RasterStretchColorRampRenderer符号化操作:
///
/// StretchColorRamp符号化RasterLayer
///
///RasterLayer
publicvoid SetStretchColorRampRenderer(IRasterLayer pRasterLayer)
{
try
{
//创建RasterStretchColorRampRendererClass对象
IRasterStretchColorRampRenderer pRStretchRender=newRasterStretchColorRampRendererClass();
//QI到IRasterRenderer
IRasterRenderer pRasterRender=pRStretchRenderas IRasterRenderer;
pRasterRender.Raster = pRasterLayer asIRaster;
pRasterRender.Update();
//创建两个起始颜色
IRgbColor pFromRgbColor =new RgbColorClass();
pFromRgbColor.Red = 255;
IRgbColor pToRgbColor =new RgbColorClass();
pToRgbColor.Blue = 255;
//创建起止颜色带
IAlgorithmicColorRamp pAlgorithmicColorRamp =newAlgorithmicColorRampClass();
pAlgorithmicColorRamp.Size = 255;
pAlgorithmicColorRamp.FromColor = pFromRgbColor asIColor;
pAlgorithmicColorRamp.ToColor = pToRgbColor asIColor;
bool btrue=true;
pAlgorithmicColorRamp.CreateRamp(out btrue);
//选择拉伸颜色带符号化的波段
pRStretchRender.BandIndex = 0;
//设置拉伸颜色带符号化所采用的颜色带
pRStretchRender.ColorRamp = pAlgorithmicColorRamp asIColorRamp;
pRasterRender.Update();
//符号化RasterLayer
pRasterLayer.Renderer = pRasterRender;
}
catch(Exception Err)
{
MessageBox.Show(Err.Message,"提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
AE之分级颜色专题图渲染
参考代码1:
private void 分级渲染ToolStripMenuItem_Click(object sender, EventArgs e)
{
//值分级
IBasicHistogram pBasicHis = new BasicTableHistogramClass();
ITableHistogram pTabHis = (ITableHistogram)pBasicHis;
pTabHis.Field = "w1";
ITable pTab = (ITable)axMapControl1.get_Layer(0);
pTabHis.Table = pTab;
object doubleArrVal, longArrFreq;
pBasicHis.GetHistogram(out doubleArrVal, out longArrFreq);
IClassifyGEN pClassify = new EqualIntervalClass(); //NaturalBreaksClass
int nDes = 5;
pClassify.Classify(doubleArrVal, longArrFreq, ref nDes);
object classes = pClassify.ClassBreaks;
System.Array pArr = (System.Array)classes;
//算法梯度颜色
IAlgorithmicColorRamp pAlgoColorRamp = new AlgorithmicColorRampClass();
pAlgoColorRamp.Size = pArr.Length;
IRgbColor pFromColor = new RgbColorClass(), pToColor = new RgbColorClass();
pFromColor.Red = 0;
pFromColor.Green = 255;
pFromColor.Blue = 0;
pToColor.Red = 255;
pToColor.Green = 0;
pToColor.Blue = 255;
pAlgoColorRamp.FromColor = pFromColor;
pAlgoColorRamp.ToColor = pToColor;
bool ok = true;
pAlgoColorRamp.CreateRamp(out ok);
//颜色梯度结束
IClassBreaksRenderer pRender = new ClassBreaksRendererClass();
pRender.BreakCount = pArr.Length;
pRender.Field = "w1";
ISimpleFillSymbol pSym;
for (int i = 0; i < pArr.Length; i++)
{
pRender.set_Break(i, (double)pArr.GetValue(i));
pSym = new SimpleFillSymbolClass();
pSym.Color = pAlgoColorRamp.get_Color(i);
pRender.set_Symbol(i, (ISymbol)pSym);
}
IGeoFeatureLayer pGeoLyr = (IGeoFeatureLayer)axMapControl1.get_Layer(0);
pGeoLyr.Renderer = (IFeatureRenderer)pRender;
axMapControl1.Refresh();
axTOCControl1.Update();
}
参考代码2:
private void 分层设色ToolStripMenuItem_Click(object sender, EventArgs e)
{
//获取当前图层 ,并把它设置成IGeoFeatureLayer的实例
IMap pMap = axMapControl1.Map;
ILayer pLayer = pMap.get_Layer(0) as IFeatureLayer;
IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer;
IGeoFeatureLayer pGeoFeatureLayer = pLayer as IGeoFeatureLayer;
//获取图层上的feature
IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;
IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false);
IFeature pFeature = pFeatureCursor.NextFeature();
//
IFeatureRenderer PR=pGeoFeatureLayer.Renderer;
//JoinData("县级区域", "DZGB", "sectioncode"); //join外部表
// int DC ;
int desiredClasses = 5;
string fieldName = "w1";
int classesCount;
double[] classes;
string strOutput = "";
bool ok;
object dataFrequency;
object dataValues;
ITable pTable ;
//IClassify pClassify;
EqualIntervalClass pClassify;
//IBasicHistogram pTableHistogram = new BasicTableHistogramClass();
//IHistogram pTableHistogram = new BasicTableHistogramClass();
ITableHistogram pTableHistogram = new BasicTableHistogramClass() as ITableHistogram;
IBasicHistogram pHistogram;
IClassBreaksRenderer pClassBreaksRenderer;
IHsvColor pFromColor;
IHsvColor pToColor;
IAlgorithmicColorRamp pAlgorithmicColorRamp;
IEnumColors pEnumColors;
IColor pColor;
ISimpleFillSymbol pSimpleFillSymbol;
pLayer = (IFeatureLayer)axMapControl1.get_Layer(0);
pGeoFeatureLayer = (IGeoFeatureLayer)pLayer;
pTable = (ITable)pGeoFeatureLayer;
pHistogram = (IBasicHistogram)pTableHistogram;
// Get values and frequencies for the field
pTableHistogram.Field = fieldName;
pTableHistogram.Table = pTable;
pHistogram.GetHistogram(out dataValues, out dataFrequency);
// Put values and frequencies into an Equal Interval Classify Object
pClassify = new EqualIntervalClass();
//pClassify = new NaturalBreaksClass();
pClassify.SetHistogramData(dataValues, dataFrequency);
pClassify.Classify(dataValues, dataFrequency, ref desiredClasses);
//pClassify.Classify(ref desiredClasses);
classes = (double[])pClassify.ClassBreaks;
classesCount = classes.Length;
// Initialise a new Class Breaks renderer
// Supply the number of Class Breaks and the field to perform. the class breaks on
pClassBreaksRenderer = new ClassBreaksRendererClass();
pClassBreaksRenderer.Field = fieldName;
pClassBreaksRenderer.BreakCount = classesCount;
pClassBreaksRenderer.SortClassesAscending = true;
// Use algorithmic color ramp to generate an range of colors between YELLOW to RED
// Initial color: YELLOW
pFromColor = new HsvColorClass();
pFromColor.Hue = 60;
pFromColor.Saturation = 100;
pFromColor.Value = 96;
// Final color: RED
pToColor = new HsvColorClass();
pToColor.Hue = 0;
pToColor.Saturation = 100;
pToColor.Value = 96;
// Set up HSV Color ramp to span from YELLOW to RED
pAlgorithmicColorRamp = new AlgorithmicColorRampClass();
pAlgorithmicColorRamp.Algorithm = esriColorRampAlgorithm.esriHSVAlgorithm;
pAlgorithmicColorRamp.FromColor = pFromColor;
pAlgorithmicColorRamp.ToColor = pToColor;
pAlgorithmicColorRamp.Size = classesCount;
pAlgorithmicColorRamp.CreateRamp(out ok);
pEnumColors = pAlgorithmicColorRamp.Colors;
for (int index = 0; index < classesCount - 1; index++)
{
pColor = pEnumColors.Next();
pSimpleFillSymbol = new SimpleFillSymbolClass();
pSimpleFillSymbol.Color = pColor;
pSimpleFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid;
pClassBreaksRenderer.set_Symbol(index, (ISymbol)pSimpleFillSymbol);
pClassBreaksRenderer.set_Break(index, classes[index + 1]);
// Store each break value for user output
strOutput += "-" + classes[index + 1] + "\n";
}
pGeoFeatureLayer.Renderer = (IFeatureRenderer)pClassBreaksRenderer;
//this.axMapControl1.Refresh();
/////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////
//get the custom property from which is supposed to be the layer to be saved
object customProperty = null;
//IMapControl3 mapControl = null;
customProperty = axMapControl1.CustomProperty;
//ask the user to set a name for the new layer file
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Layer File|*.lyr|All Files|*.*";
saveFileDialog.Title = "生成专题图";
saveFileDialog.RestoreDirectory = true;
saveFileDialog.FileName = System.IO.Path.Combine(saveFileDialog.InitialDirectory, pGeoFeatureLayer.Name + ".lyr");
//get the layer name from the user
DialogResult dr = saveFileDialog.ShowDialog();
if (saveFileDialog.FileName != "" && dr == DialogResult.OK)
{
if (System.IO.File.Exists(saveFileDialog.FileName))
{
//try to delete the existing file
System.IO.File.Delete(saveFileDialog.FileName);
}
//create a new LayerFile instance
ILayerFile layerFile = new LayerFileClass();
//create a new layer file
layerFile.New(saveFileDialog.FileName);
//attach the layer file with the actual layer
layerFile.ReplaceContents((ILayer)pGeoFeatureLayer);
//save the layer file
layerFile.Save();
//ask the user whether he'd like to add the layer to the map
if (DialogResult.Yes == MessageBox.Show("Would you like to add the layer to the map?", "Message", MessageBoxButtons.YesNo,MessageBoxIcon.Question))
{
axMapControl1.AddLayerFromFile(saveFileDialog.FileName, 0);
}
}
IActiveView pActiveView = axMapControl1.Map as IActiveView;
pActiveView.Refresh();
axTOCControl1.Update();
}
参考代码3:
private void 等级专题图ToolStripMenuItem_Click(object sender, EventArgs e)
{
// 获取当前图层,并把它设置成IGeoFeatureLayer的实例
ILayer pLayer = axMapControl1.get_Layer(0);
IFeatureLayer pFeatLayer = (IFeatureLayer)pLayer;
IGeoFeatureLayer pGeoFeatLayer = (IGeoFeatureLayer)pLayer;
IFeatureClass pFeatClass = pFeatLayer.FeatureClass;
// We're going to retrieve frequency data from a population
// field and then clasify this data
ITable pTable = (ITable)pFeatClass;
IBasicHistogram pBasicHistogram = new BasicTableHistogramClass();
ITableHistogram pTableHistogram = (ITableHistogram)pBasicHistogram;
// Get values and frequencies for the population field into a table histogram object
string fieldName = "w1";
pTableHistogram.Field = fieldName;
pTableHistogram.Table = pTable;
object dataValues;
object dataFrequency;
pBasicHistogram.GetHistogram(out dataValues, out dataFrequency);
IClassifyGEN pClassifyGEN = new QuantileClass();
int numClass = 3;
pClassifyGEN.Classify(dataValues, dataFrequency, ref numClass);
double[] classes = (double[])pClassifyGEN.ClassBreaks;
long classesCount = long.Parse(classes.GetUpperBound(0).ToString());
// Initialize a new class breaks renderer and supply the number of class breaks
// and the field to perform the class breaks on
IClassBreaksRenderer pClassBreaksRenderer = new ClassBreaksRendererClass();
pClassBreaksRenderer.Field = fieldName;
pClassBreaksRenderer.MinimumBreak = classes[0];
pClassBreaksRenderer.SortClassesAscending = true;
// 设置着色对象的分级数目
pClassBreaksRenderer.BreakCount = int.Parse(classesCount.ToString());
// 创建并设置随机色谱
IAlgorithmicColorRamp pAlgorithmicColorRamp = new AlgorithmicColorRampClass();
pAlgorithmicColorRamp.Algorithm = esriColorRampAlgorithm.esriCIELabAlgorithm;
IEnumColors pEnumColors;
IRgbColor pColor1 = new RgbColorClass();
IRgbColor pColor2 = new RgbColorClass();
pColor1.Red = 255;
pColor1.Green = 210;
pColor1.Blue = 210;
pColor2.Red = 190;
pColor2.Green = 0;
pColor2.Blue = 170;
pAlgorithmicColorRamp.FromColor = pColor1;
pAlgorithmicColorRamp.ToColor = pColor2;
pAlgorithmicColorRamp.Size = numClass;
bool ok = true;
pAlgorithmicColorRamp.CreateRamp(out ok);
pEnumColors = pAlgorithmicColorRamp.Colors;
pEnumColors.Reset();
IClassBreaksUIProperties pUIProperties = (IClassBreaksUIProperties)pClassBreaksRenderer;
pUIProperties.ColorRamp = "Custom";
ISimpleFillSymbol pSimpleMarkerSymbol = new SimpleFillSymbolClass();
IColor pColor;
int[] colors = new int[numClass];
// be careful, indices are different for the different lists
for (int breakIndex = 0; breakIndex < classesCount; breakIndex++)
{
pClassBreaksRenderer.set_Label(breakIndex, classes[breakIndex] + "-" + classes[breakIndex + 1]);
pUIProperties.set_LowBreak(breakIndex, classes[breakIndex]);
ISimpleFillSymbol pFillSymbol = new SimpleFillSymbolClass();
pColor = pEnumColors.Next();
pFillSymbol.Color = pColor;
colors[breakIndex] = pColor.RGB;
pClassBreaksRenderer.set_Symbol(breakIndex, (ISymbol)pFillSymbol);
pClassBreaksRenderer.set_Break(breakIndex, classes[breakIndex + 1]);
}
// 将等级图渲染对象与渲染图层挂钩
pGeoFeatLayer.Renderer = (IFeatureRenderer)pClassBreaksRenderer;
axMapControl1.ActiveView.Refresh();
axTOCControl1.Update();
}
参考代码4:
private void 等级图ToolStripMenuItem_Click(object sender, EventArgs e)
{
//获取当前图层 ,并把它设置成IGeoFeatureLayer的实例
IMap pMap = axMapControl1.Map;
ILayer pLayer = pMap.get_Layer(0) as IFeatureLayer;
IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer;
IGeoFeatureLayer pGeoFeatureLayer = pLayer as IGeoFeatureLayer;
//获取图层上的feature
IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;
IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false);
IFeature pFeature = pFeatureCursor.NextFeature();
//////////////////////////////////////////////////////////////////////
//定义所需的接口对象和相关变量
IClassBreaksUIProperties pUIProperties;
object dataValues;
object dataFrequency;
//double[] cb;
int breakIndex;
long ClassesCount;
int numClass;
numClass = 10;
double[] Classes;
//////////////////////////////////////////////////////////////////////
ITable pTable;
pTable = pFeatureClass as ITable;
IBasicHistogram pBasicHist = new BasicTableHistogramClass();
ITableHistogram pTableHist;
pTableHist = (ITableHistogram)pBasicHist;
//Get values and frequencies for the population field into a table histogram object
pTableHist.Field = "w1";
pTableHist.Table = pTable;
pBasicHist.GetHistogram(out dataValues, out dataFrequency);
IClassifyGEN pClassifyGEN = new QuantileClass();
pClassifyGEN.Classify(dataValues, dataFrequency, ref numClass);
Classes = (double[])pClassifyGEN.ClassBreaks;
ClassesCount = long.Parse(Classes.GetUpperBound(0).ToString());
//Initialise a new class breaks renderer and supply the number of class breaks and the field to perform. the class breaks on.
IClassBreaksRenderer pClassBreaksRenderer = new ClassBreaksRendererClass();
pClassBreaksRenderer.Field = "w1";
//pClassBreaksRenderer.BreakCount = ClassesCount;
pClassBreaksRenderer.MinimumBreak = Classes[0];
pClassBreaksRenderer.SortClassesAscending = true;
//设置着色对象的分级数目
pClassBreaksRenderer.BreakCount = int.Parse(ClassesCount.ToString());
//创建并设置随机色谱
IAlgorithmicColorRamp pColorRamp = new AlgorithmicColorRampClass();
pColorRamp.Algorithm = esriColorRampAlgorithm.esriCIELabAlgorithm;
IEnumColors pEnumColors;
IRgbColor pColor1 = new RgbColorClass();
IRgbColor pColor2 = new RgbColorClass();
pColor1.Red = 255;
pColor1.Green = 210;
pColor1.Blue = 210;
pColor2.Red = 190;
pColor2.Green = 0;
pColor2.Blue = 170;
pColorRamp.FromColor = pColor1;
pColorRamp.ToColor = pColor2;
pColorRamp.Size = numClass;
bool ok = true;
//pColorRamp.CreateRamp(out ok);
pColorRamp.CreateRamp(out ok);
pEnumColors = pColorRamp.Colors;
pEnumColors.Reset();// use this interface to set dialog properties
pUIProperties = pClassBreaksRenderer as IClassBreaksUIProperties;
pUIProperties.ColorRamp = "Custom";
ISimpleFillSymbol pSimpleMarkerSymbol = new SimpleFillSymbolClass();
IColor pColor;
int[] colors = new int[numClass];
// be careful, indices are different for the diff lists
for (breakIndex = 0; breakIndex < ClassesCount; breakIndex++)
{
pClassBreaksRenderer.set_Label(breakIndex, Classes[breakIndex] + " - " + Classes[breakIndex + 1]);
pUIProperties.set_LowBreak(breakIndex, Classes[breakIndex]);
pSimpleMarkerSymbol = new SimpleFillSymbolClass();
pColor = pEnumColors.Next();
pSimpleMarkerSymbol.Color = pColor;
colors[breakIndex] = pColor.RGB;
pClassBreaksRenderer.set_Symbol(breakIndex, (ISymbol)pSimpleMarkerSymbol);
pClassBreaksRenderer.set_Break(breakIndex, Classes[breakIndex + 1]);
}
//将等级图渲染对象与渲染图层挂钩
pGeoFeatureLayer.Renderer = (IFeatureRenderer)pClassBreaksRenderer;
//刷新地图和TOOCotrol
IActiveView pActiveView = axMapControl1.Map as IActiveView;
pActiveView.Refresh();
axTOCControl1.Update();
}
from: http://blog.sina.com.cn/s/blog_90b91bf101015jkj.html
http://blog.sina.com.cn/s/blog_642c66ed0101cs5m.html
ArcGIS Engine渲染的更多相关文章
- ArcGIS Engine专题地图渲染器的实现(入门版)
专题地图(Thematic Map)是着重表示一种或数种自然要素特征或社会经济现象的地图 专题地图的内容由两部分构成: 1.专题内容——图上突出表示的自然或社会经济现象及其有关特征 2.地理基础——用 ...
- ArcGIS Engine开发前基础知识(2)
ArcGIS基本控件简介 ArcGIS Engine控件是一组可视化的开发组件,每个ArcGIS Engine控件都是一个COM组件.这些组件包括MapControl,PageLayoutContro ...
- ArcGIS Engine开发前基础知识(1)
ArcGIS二次开发是当前gis领域的一项重要必不可少的技能.下面介绍它的基本功能 一.ArcGIS Engine功能 在使用之前首先安装和部署arcgis sdk,(在这里不在赘述相关知识)可以实现 ...
- [转载]ArcGIS Engine 中的多线程使用
ArcGIS Engine 中的多线程使用 原文链接 http://anshien.blog.163.com/blog/static/169966308201082441114173/ 一直都想写 ...
- ArcGIS Engine Style文件操作
对于一个GISer来说,地图,符号这些都应该有着比别人更深刻的理解和认识,作为平台软件都会提供一套自己的符号库,符号库里面根据类别和种类进行区分,因为点,线,面的自然存在和固有属性是不肯能让你用面状符 ...
- ArcGIS engine中Display类库——Display
转自原文 ArcGIS engine中Display类库——Display Display类库包括了用于显示GIS数据的对象.除了负责实际输出图像的主要显示对象(display object)外,这 ...
- ArcGIS Engine中的Symbols详解
转自原文ArcGIS Engine中的Symbols详解 本文由本人翻译ESRI官方帮助文档.尊重劳动成果,转载请注明来源. Symbols ArcObjects用了三种类型的Symbol(符号样式) ...
- ArcGIS Engine 中的多线程使用
转自原文ArcGIS Engine 中的多线程使用 一直都想写写AE中多线程的使用,但一直苦于没有时间,终于在中秋假期闲了下来.呵呵,闲话不说了,进入正题! 大家都了解到ArcGIS中处理大数据量时速 ...
- ArcGIS engine中Display类库 (局部刷新)
转自原文 ArcGIS engine中Display类库 (局部刷新) Display类库包括了用于显示GIS数据的对象.除了负责实际输出图像的主要显示对象(display object)外,这个类库 ...
随机推荐
- Hadoop集群搭建安装过程(三)(图文详解---尽情点击!!!)
Hadoop集群搭建安装过程(三)(图文详解---尽情点击!!!) 一.JDK的安装 安装位置都在同一位置(/usr/tools/jdk1.8.0_73) jdk的安装在克隆三台机器的时候可以提前安装 ...
- div各种距离 详细解释图
详细博文介绍:http://blog.csdn.net/fswan/article/details/17238933
- C#中的选择语句
一.选择语句 if,else if是如果的意思,else是另外的意思,if'后面跟()括号内为判断条件,如果符合条件则进入if语句执行命令.如果不符合则不进入if语句.else后不用加条件,但是必须与 ...
- AFNetworking3.0 Https P12证书
最近服务器由原来的ice中间件改为https.方便了和服务器交互时不用自己aes加密了. -之前服务器人员和我(IOS)都没有使用过https,所以https跑不通很难说是服务器没有配置好还是IOS这 ...
- 【WEB前端】CSS常用选择器
1.1 标签选择器 就是用标签名来当做选择器. 1) 所有标签都能够当做选择器,比如body.h1.dl.ul.span等等 2) 不管这个标签藏的多深,都能够被选择上. 3) 选择的是所有的,而不是 ...
- 11.12模拟考T1(可持续优化)PS:神奇的东西
1.数列操作 (array.pas/c/cpp) [问题描述] 现在有一个数列,最初包含0个数.现在要对数列操作n次,操作有3类. 1) a k,在数列的最后插入一个整数k 2) s 将最近插入的 ...
- LeetCode-Subsets
Given a set of distinct integers, nums, return all possible subsets. Note: The solution set must not ...
- Struts2文件下载找不到输入流异常
先发异常 Can not find a java.io.InputStream with the name [downloadFile] in the invocation stack. Check ...
- CSS中的class与id区别及用法
转自http://www.divcss5.com/rumen/r3.shtml及http://www.jb51.net/css/35927.html 我们平常在用DIV CSS制作Xhtml网页页面时 ...
- centos6.3环境下升级python及MySQLdb的安装
近来突然想鼓捣下linux下的python,看下Python数据库方面的东西,想着在centos下测试下.然而安装的过程有很多坑.下面对整个流程进行下记录 1.python基本库的安装 在安装pyth ...