c#+arcAE对图层进行各种渲染操作
转载:http://blog.sina.com.cn/s/blog_6023833e0100t5t0.html
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.SystemUI;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.DataSourcesFile;
using ESRI.ArcGIS.Display;
namespace lesson3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
loadMapDocument();
}
//加载地图文档
private void loadMapDocument()
{
System.Windows.Forms.OpenFileDialog openFileDialog;
openFileDialog = new OpenFileDialog();
openFileDialog.Title = "打开地图文档";
openFileDialog.Filter = "map documents(*.mxd)|*.mxd";
openFileDialog.ShowDialog();
string filePath = openFileDialog.FileName;
if (axMapControl1.CheckMxFile(filePath))
{
axMapControl1.MousePointer = esriControlsMousePointer.esriPointerHourglass;
axMapControl1.LoadMxFile(filePath, 0, Type.Missing);
axMapControl1.MousePointer = esriControlsMousePointer.esriPointerDefault;
}
else
{
MessageBox.Show(filePath + "不是有效的地图文档");
}
}
//获取颜色对象
private IRgbColor getRGB(int r, int g, int b)
{
IRgbColor pColor;
pColor = new RgbColorClass();
pColor.Red = r;
pColor.Green = g;
pColor.Blue = b;
return pColor;
}
private IGeoFeatureLayer getGeoLayer(string layerName)
{
ILayer layer;
IGeoFeatureLayer geoFeatureLayer ;
for (int i = 0; i < this.axMapControl1.LayerCount; i++)
{
layer = this.axMapControl1.get_Layer(i);
if (layer != null && layer.Name == layerName)
{
geoFeatureLayer = layer as IGeoFeatureLayer ;
return geoFeatureLayer;
}
}
return null;
}
//简单渲染专题图
private void button1_Click(object sender, EventArgs e)
{
//简单填充符号
ISimpleFillSymbol simpleFillSymbol = new SimpleFillSymbolClass();
simpleFillSymbol.Style = esriSimpleFillStyle.esriSFSDiagonalCross;
simpleFillSymbol.Color = getRGB(255, 0, 0);
//创建边线符号
ISimpleLineSymbol simpleLineSymbol = new SimpleLineSymbolClass();
simpleLineSymbol.Style = esriSimpleLineStyle.esriSLSDashDotDot;
simpleLineSymbol.Color = getRGB(0, 255, 0);
ISymbol symbol = simpleLineSymbol as ISymbol;
symbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;
simpleFillSymbol.Outline = simpleLineSymbol;
ISimpleRenderer simpleRender =new SimpleRendererClass ();
simpleRender .Symbol =simpleFillSymbol as ISymbol ;
simpleRender.Label ="continent";
simpleRender.Description ="简单渲染";
IGeoFeatureLayer geoFeatureLayer;
geoFeatureLayer = getGeoLayer("Continents");
if (geoFeatureLayer != null)
{
geoFeatureLayer.Renderer = simpleRender as IFeatureRenderer ;
}
this.axMapControl1.Refresh();
}
//创建颜色带
private IColorRamp CreateAlgorithmicColorRamp(int count )
{
//创建一个新AlgorithmicColorRampClass对象
IAlgorithmicColorRamp algColorRamp = new AlgorithmicColorRampClass();
IRgbColor fromColor = new RgbColorClass();
IRgbColor toColor = new RgbColorClass();
//创建起始颜色对象
fromColor.Red = 255;
fromColor.Green = 0;
fromColor.Blue = 0;
//创建终止颜色对象
toColor.Red = 0;
toColor.Green = 0;
toColor.Blue = 255;
//设置AlgorithmicColorRampClass的起止颜色属性
algColorRamp.ToColor = fromColor;
algColorRamp.FromColor = toColor;
//设置梯度类型
algColorRamp.Algorithm = esriColorRampAlgorithm.esriCIELabAlgorithm;
//设置颜色带颜色数量
algColorRamp.Size = count ;
//创建颜色带
bool bture = true;
algColorRamp.CreateRamp(out bture);
return algColorRamp;
}
//分级专题图
private void button2_Click(object sender, EventArgs e)
{
int classCount = 6;
ITableHistogram tableHistogram;
IBasicHistogram basicHistogram;
ITable table;
IGeoFeatureLayer geoFeatureLayer;
geoFeatureLayer = getGeoLayer("Continents");
ILayer layer = geoFeatureLayer as ILayer;
table = layer as ITable;
tableHistogram =new BasicTableHistogramClass ();
//按照 数值字段分级
tableHistogram.Table =table ;
tableHistogram.Field ="sqmi";
basicHistogram =tableHistogram as IBasicHistogram ;
object values;
object frequencys;
//先统计每个值和各个值出现的次数
basicHistogram.GetHistogram (out values ,out frequencys );
//创建平均分级对象
IClassifyGEN classifyGEN =new QuantileClass ();
//用统计结果进行分级 ,级别数目为classCount
classifyGEN.Classify (values ,frequencys , ref classCount );
//获得分级结果,是个 双精度类型数组
double [] classes;
classes=classifyGEN.ClassBreaks as double [];
IEnumColors enumColors = CreateAlgorithmicColorRamp(classes.Length ).Colors;
IColor color;
IClassBreaksRenderer classBreaksRenderer = new ClassBreaksRendererClass();
classBreaksRenderer.Field = "sqmi";
classBreaksRenderer.BreakCount = classCount;
classBreaksRenderer.SortClassesAscending = true;
ISimpleFillSymbol simpleFillSymbol;
for (int i = 0; i < classes.Length-1 ; i++)
{
color = enumColors.Next();
simpleFillSymbol = new SimpleFillSymbolClass ();
simpleFillSymbol.Color = color;
simpleFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid;
classBreaksRenderer.set_Symbol(i, simpleFillSymbol as ISymbol);
classBreaksRenderer.set_Break(i, classes[i]);
}
if (geoFeatureLayer != null)
{
geoFeatureLayer.Renderer = classBreaksRenderer as IFeatureRenderer;
}
this.axMapControl1.ActiveView.Refresh();
}
//单一值专题图
private void button3_Click(object sender, EventArgs e)
{
IGeoFeatureLayer geoFeatureLayer;
geoFeatureLayer = getGeoLayer("Continents");
IUniqueValueRenderer uniqueValueRenderer =new UniqueValueRendererClass ();
uniqueValueRenderer.FieldCount =1;
uniqueValueRenderer.set_Field (0,"continent");
//简单填充符号
ISimpleFillSymbol simpleFillSymbol = new SimpleFillSymbolClass();
simpleFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid ;
IFeatureCursor featureCursor = geoFeatureLayer.FeatureClass.Search(null, false);
IFeature feature;
if (featureCursor != null)
{
IEnumColors enumColors = CreateAlgorithmicColorRamp(8).Colors;
int fieldIndex =geoFeatureLayer.FeatureClass.Fields.FindField ("continent");
for (int i = 0; i <8; i++)
{
feature = featureCursor.NextFeature();
string nameValue = feature.get_Value(fieldIndex).ToString ();
simpleFillSymbol = new SimpleFillSymbolClass();
simpleFillSymbol.Color = enumColors.Next();
uniqueValueRenderer.AddValue(nameValue, "continent", simpleFillSymbol as ISymbol);
}
}
geoFeatureLayer.Renderer = uniqueValueRenderer as IFeatureRenderer;
this.axMapControl1.Refresh();
}
//ProportionalSymbolRenderer
private void button4_Click(object sender, EventArgs e)
{
IGeoFeatureLayer geoFeatureLayer;
IFeatureLayer featureLayer ;
IProportionalSymbolRenderer proportionalSymbolRenderer ;
ITable table ;
ICursor cursor;
IDataStatistics dataStatistics ;
IStatisticsResults statisticsResult;
stdole.IFontDisp fontDisp;
geoFeatureLayer = getGeoLayer("Continents");
featureLayer =geoFeatureLayer as IFeatureLayer ;
table =geoFeatureLayer as ITable ;
cursor =table.Search (null,true );
dataStatistics =new DataStatisticsClass ();
dataStatistics.Cursor =cursor ;
dataStatistics.Field ="sqmi";
statisticsResult =dataStatistics.Statistics ;
if (statisticsResult !=null)
{
IFillSymbol fillSymbol =new SimpleFillSymbolClass ();
fillSymbol.Color =getRGB (0,255,0);
ICharacterMarkerSymbol characterMarkerSymbol=new CharacterMarkerSymbolClass ();
fontDisp =new stdole.StdFontClass () as stdole.IFontDisp ;
fontDisp.Name ="arial";
fontDisp.Size =20;
characterMarkerSymbol.Font =fontDisp ;
characterMarkerSymbol.CharacterIndex =90;
characterMarkerSymbol.Color =getRGB (255,0,0);
characterMarkerSymbol.Size =8;
proportionalSymbolRenderer=new ProportionalSymbolRendererClass ();
proportionalSymbolRenderer.ValueUnit =esriUnits.esriUnknownUnits;
proportionalSymbolRenderer .Field ="sqmi";
proportionalSymbolRenderer.FlanneryCompensation =false ;
proportionalSymbolRenderer.MinDataValue =statisticsResult.Minimum ;
proportionalSymbolRenderer.MaxDataValue =statisticsResult.Maximum ;
proportionalSymbolRenderer.BackgroundSymbol =fillSymbol ;
proportionalSymbolRenderer.MinSymbol =characterMarkerSymbol as ISymbol ;
proportionalSymbolRenderer.LegendSymbolCount =10;
proportionalSymbolRenderer.CreateLegendSymbols ();
geoFeatureLayer.Renderer =proportionalSymbolRenderer as IFeatureRenderer ;
}
this.axMapControl1.Refresh();
}
//BarChartSymbol
private void button5_Click(object sender, EventArgs e)
{
IGeoFeatureLayer geoFeatureLayer ;
IFeatureLayer featureLayer ;
ITable table ;
ICursor cursor;
IRowBuffer rowBuffer;
//设置渲染要素
string field1="sqmi";
string field2="sqkm";
//获取渲染图层
geoFeatureLayer = getGeoLayer("Continents");
featureLayer =geoFeatureLayer as IFeatureLayer ;
table =featureLayer as ITable ;
geoFeatureLayer.ScaleSymbols =true;
IChartRenderer chartRenderer =new ChartRendererClass ();
IRendererFields rendererFields=chartRenderer as IRendererFields ;
rendererFields.AddField (field1 ,field1 );
rendererFields.AddField (field2,field2);
int [] fieldIndexs=new int [2];
fieldIndexs [0]=table.FindField (field1);
fieldIndexs [1]=table.FindField (field2);
//获取要素最大值
double fieldValue =0.0,maxValue=0.0;
cursor = table.Search(null, true);
rowBuffer =cursor .NextRow ();
while (rowBuffer!=null )
{
for (int i =0;i<2;i++)
{
fieldValue =double .Parse (rowBuffer.get_Value (fieldIndexs[i]).ToString ()) ;
if (fieldValue >maxValue )
{
maxValue =fieldValue ;
}
}
rowBuffer =cursor.NextRow ();
}
//创建水平排列符号
IBarChartSymbol barChartSymbol =new BarChartSymbolClass ();
barChartSymbol.Width =10;
IMarkerSymbol markerSymbol =barChartSymbol as IMarkerSymbol ;
markerSymbol.Size =50;
IChartSymbol chartSymbol=barChartSymbol as IChartSymbol ;
chartSymbol.MaxValue =maxValue ;
//添加渲染符号
ISymbolArray symbolArray =barChartSymbol as ISymbolArray ;
IFillSymbol fillSymbol =new SimpleFillSymbolClass ();
fillSymbol.Color =getRGB (255,0,0);
symbolArray.AddSymbol (fillSymbol as ISymbol );
fillSymbol =new SimpleFillSymbolClass ();
fillSymbol .Color =getRGB (0,255,0);
symbolArray .AddSymbol (fillSymbol as ISymbol );
//设置柱状图符号
chartRenderer.ChartSymbol =barChartSymbol as IChartSymbol ;
fillSymbol =new SimpleFillSymbolClass ();
fillSymbol.Color =getRGB (0,0,255);
chartRenderer.BaseSymbol =fillSymbol as ISymbol ;
chartRenderer.UseOverposter =false ;
//创建图例
chartRenderer.CreateLegend ();
geoFeatureLayer.Renderer =chartRenderer as IFeatureRenderer ;
this.axMapControl1.Refresh();
}
//StackedChartSymbol
private void button6_Click(object sender, EventArgs e)
{
IGeoFeatureLayer geoFeatureLayer;
IFeatureLayer featureLayer;
ITable table;
ICursor cursor;
IRowBuffer rowBuffer;
//设置渲染要素
string field1 = "sqmi";
string field2 = "sqkm";
//获取渲染图层
geoFeatureLayer = getGeoLayer("Continents");
featureLayer = geoFeatureLayer as IFeatureLayer;
table = featureLayer as ITable;
geoFeatureLayer.ScaleSymbols = true;
IChartRenderer chartRenderer = new ChartRendererClass();
IRendererFields rendererFields = chartRenderer as IRendererFields;
rendererFields.AddField(field1, field1);
rendererFields.AddField(field2, field2);
int[] fieldIndexs = new int[2];
fieldIndexs[0] = table.FindField(field1);
fieldIndexs[1] = table.FindField(field2);
//获取要素最大值
double fieldValue = 0.0, maxValue = 0.0;
cursor = table.Search(null, true);
rowBuffer = cursor.NextRow();
while (rowBuffer != null)
{
for (int i = 0; i < 2; i++)
{
fieldValue = double.Parse(rowBuffer.get_Value(fieldIndexs[i]).ToString());
if (fieldValue > maxValue)
{
maxValue = fieldValue;
}
}
rowBuffer = cursor.NextRow();
}
//创建累积排列符号
IStackedChartSymbol stackedChartSymbol = new StackedChartSymbolClass();
stackedChartSymbol.Width = 10;
IMarkerSymbol markerSymbol = stackedChartSymbol as IMarkerSymbol;
markerSymbol.Size = 50;
IChartSymbol chartSymbol = stackedChartSymbol as IChartSymbol;
chartSymbol.MaxValue = maxValue;
//添加渲染符号
ISymbolArray symbolArray = stackedChartSymbol as ISymbolArray;
IFillSymbol fillSymbol = new SimpleFillSymbolClass();
fillSymbol.Color = getRGB(255, 0, 0);
symbolArray.AddSymbol(fillSymbol as ISymbol);
fillSymbol = new SimpleFillSymbolClass();
fillSymbol.Color = getRGB(0, 255, 0);
symbolArray.AddSymbol(fillSymbol as ISymbol);
//设置柱状图符号
chartRenderer.ChartSymbol = stackedChartSymbol as IChartSymbol;
fillSymbol = new SimpleFillSymbolClass();
fillSymbol.Color = getRGB(0, 0, 255);
chartRenderer.BaseSymbol = fillSymbol as ISymbol;
chartRenderer.UseOverposter = false;
//创建图例
chartRenderer.CreateLegend();
geoFeatureLayer.Renderer = chartRenderer as IFeatureRenderer;
this.axMapControl1.Refresh();
}
//PieChartRenderer
private void button7_Click(object sender, EventArgs e)
{
IGeoFeatureLayer geoFeatureLayer;
IFeatureLayer featureLayer;
ITable table;
ICursor cursor;
IRowBuffer rowBuffer;
//设置饼图的要素
string field1 = "sqmi";
string field2 = "sqkm";
//获取渲染图层
geoFeatureLayer = getGeoLayer("Continents");
featureLayer = geoFeatureLayer as IFeatureLayer;
table = featureLayer as ITable;
geoFeatureLayer.ScaleSymbols = true;
IChartRenderer chartRenderer = new ChartRendererClass();
IPieChartRenderer pieChartRenderer =chartRenderer as IPieChartRenderer ;
IRendererFields rendererFields = chartRenderer as IRendererFields;
rendererFields.AddField(field1, field1);
rendererFields.AddField(field2, field2);
int[] fieldIndexs = new int[2];
fieldIndexs[0] = table.FindField(field1);
fieldIndexs[1] = table.FindField(field2);
//获取渲染要素的最大值
double fieldValue = 0.0, maxValue = 0.0;
cursor = table.Search(null, true);
rowBuffer = cursor.NextRow();
while (rowBuffer != null)
{
for (int i = 0; i < 2; i++)
{
fieldValue = double.Parse(rowBuffer.get_Value(fieldIndexs[i]).ToString());
if (fieldValue > maxValue)
{
maxValue = fieldValue;
}
}
rowBuffer = cursor.NextRow();
}
//设置饼图符号
IPieChartSymbol pieChartSymbol =new PieChartSymbolClass ();
pieChartSymbol.Clockwise =true ;
pieChartSymbol.UseOutline =true ;
IChartSymbol chartSymbol =pieChartSymbol as IChartSymbol ;
chartSymbol.MaxValue =maxValue ;
ILineSymbol lineSymbol =new SimpleLineSymbolClass ();
lineSymbol.Color =getRGB (255,0,0);
lineSymbol.Width =2;
pieChartSymbol.Outline =lineSymbol ;
IMarkerSymbol markerSymbol=pieChartSymbol as IMarkerSymbol ;
markerSymbol.Size =30;
//添加渲染符号
ISymbolArray symbolArray=pieChartSymbol as ISymbolArray ;
IFillSymbol fillSymbol =new SimpleFillSymbolClass ();
fillSymbol.Color =getRGB (0,255,0);
symbolArray.AddSymbol (fillSymbol as ISymbol );
fillSymbol =new SimpleFillSymbolClass ();
fillSymbol .Color=getRGB (0,0,255);
symbolArray.AddSymbol (fillSymbol as ISymbol );
chartRenderer.ChartSymbol =pieChartSymbol as IChartSymbol ;
fillSymbol=new SimpleFillSymbolClass ();
fillSymbol.Color =getRGB (100,100,100);
chartRenderer.BaseSymbol =fillSymbol as ISymbol ;
chartRenderer.UseOverposter =false ;
//创建图例
chartRenderer.CreateLegend ();
geoFeatureLayer.Renderer =chartRenderer as IFeatureRenderer ;
this.axMapControl1.Refresh ();
}
//DotDensityFillSymbol
private void button8_Click(object sender, EventArgs e)
{
IGeoFeatureLayer geoFeatureLayer ;
IDotDensityFillSymbol dotDensityFillSymbol;
IDotDensityRenderer dotDensityRenderer ;
//获取渲染图层
geoFeatureLayer = getGeoLayer("Continents");
dotDensityRenderer=new DotDensityRendererClass ();
IRendererFields rendererFields =dotDensityRenderer as IRendererFields ;
//设置渲染字段
string field1="sqmi";
rendererFields.AddField (field1 ,field1 );
//设置填充颜色和背景色
dotDensityFillSymbol =new DotDensityFillSymbolClass ();
dotDensityFillSymbol.DotSize =3;
dotDensityFillSymbol.Color =getRGB (255,0,0);
dotDensityFillSymbol.BackgroundColor =getRGB (0,255,0);
//设置渲染符号
ISymbolArray symbolArray =dotDensityFillSymbol as ISymbolArray ;
ISimpleMarkerSymbol simpleMarkerSymbol =new SimpleMarkerSymbolClass ();
simpleMarkerSymbol.Style =esriSimpleMarkerStyle.esriSMSCircle ;
simpleMarkerSymbol.Size =2;
simpleMarkerSymbol.Color =getRGB (0,0,255);
symbolArray.AddSymbol (simpleMarkerSymbol as ISymbol );
dotDensityRenderer.DotDensitySymbol =dotDensityFillSymbol ;
//设置渲染密度
dotDensityRenderer.DotValue =50000;
//创建图例
dotDensityRenderer.CreateLegend ();
geoFeatureLayer .Renderer =dotDensityRenderer as IFeatureRenderer ;
this.axMapControl1.Refresh ();
}
}
}
c#+arcAE对图层进行各种渲染操作的更多相关文章
- AE开发中栅格图层实现分级渲染
GP工具IDW执行后,生成的栅格图层是黑白二色,需要手动进行分级渲染,似乎不是所有栅格图层都可以进行分级渲染,注意异常处理.注意ARCMAP中是有颜色的,无需自己处理. IRasterClassify ...
- 图片下载、渲染操作 小例子 看多FutureTask
并发执行下载图片操作 import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent. ...
- ArcGIS Desktop和Engine中对点要素图层Graduated Symbols渲染的实现 Rotation Symbol (转)
摘要 ArcGIS中,对于要素图层的渲染,支持按照要素字段的值渲染要素的大小,其中Graduated Symbols可以对大小进行分级渲染.在个人开发系统的过程中,也可以用来美化数据显 ...
- 浮点型/小数/栅格图层转为整数型arcgis操作
有时候会遇到将32位栅格数据提取属性表的操作,但是一般此类数据都是浮点型,是无法计算得到属性表的.因此我们可以利用数据管理工具下的: 复制栅格工具,在最下面选择16位即可,看自己数据情况选择signe ...
- vue学习笔记:数据渲染操作
{{xxx}} 基本的插值表达式 插值表达式 使用两个大括号 {{ data中定义的数据名 }} 可以将数据插入到指定的位置 这种写法不仅可以显示data属性里定义的值,也可以书写js中的表达式,可以 ...
- CAD画三维图怎么渲染?一分钟教你快速操作
从事过CAD相关工作的都知道,CAD绘制的方式有二维平面图以及三维图形,三维图形,画三维图方式也是比较简单的.那当然三维图画完后一般还需要进行渲染操作,步骤也是比较简洁的.下面就来给大家操作一下CAD ...
- iOS 离屏渲染的研究
GPU渲染机制: CPU 计算好显示内容提交到 GPU,GPU 渲染完成后将渲染结果放入帧缓冲区,随后视频控制器会按照 VSync 信号逐行读取帧缓冲区的数据,经过可能的数模转换传递给显示器显示. G ...
- iOS离屏渲染简书
更详细地址https://zsisme.gitbooks.io/ios-/content/chapter15/offscreen-rendering.html(包含了核心动画) GPU渲染机制: CP ...
- 离屏渲染学习笔记 /iOS圆角性能问题
离屏渲染学习笔记 一.概念理解 OpenGL中,GPU屏幕渲染有以下两种方式: On-Screen Rendering 意为当前屏幕渲染,指的是GPU的渲染操作是在当前用于显示的屏幕缓冲区中进行. O ...
随机推荐
- request.getParameter("name")获取参数为null和空字符串的区别
1.获取到的值为空字符串 当url里有name属性,但是没有值的时候,后台用request.getParameter("name")获取到的是空字符串 2.获取到的值为null 当 ...
- JavaScript里的Date 对象属性及对象方法--实现简单的日历
上网搜索"js 日历插件"就会出来各种效果的功能丰富的日历插件,很多都可以下载源码,然后根据各自的需求对源码进行修改就可以直接用了. 但今天讲的不是如何使用这些插件,而是讲如何实现 ...
- POJ 1129
#include<iostream> #include<stdio.h> #include<string> #define MAXN 60 using namesp ...
- OpenGL11-绘制汉字最高效方法(使用Freetype)(代码已更新)
最新版本,之前的版本有些文件没有打包 视频教程请关注 http://edu.csdn.net/lecturer/lecturer_detail?lecturer_id=440 OpenGL本身并没有绘 ...
- js函数技巧
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Mac在终端用命令装载dmg文件
今天碰到个问题,下载了一个dmg文件,然后双击/右键安装,一点反应都没有.一开始以为是电脑的缘故,重启,依旧没有反应,然后想到用终端装载试试. 打开终端,输入命令: hdiutil attach we ...
- ibatis中的cdata和xml中cdata的含义
ibatis的cdata用于sqlmap文件中,二sqlmap本身就是xml文件,即解析cdata的方法与xml文件的cdata相同. 简单来说:cdata就是用来表明纯文本的,如果没有这个的话 &l ...
- vuex中怎么把‘库’中的状态对象赋值给内部对象(三种方法)
一.通过computed的计算属性直接赋值 import store from '@/store/store' export default{ name: 'count', data(){ retur ...
- firefox native extension -- har export trigger
这两天想学习下如何在运行自动化脚本时去capture http traffic,google看到一篇博客介绍用browser mob proxy或者firefox+firebug+netexport, ...
- Spring IOC(DI)
软件152 余建强 1 什么是IOC IOC—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不 ...