修改SampleCode 例子代码 单值专题图
来源:互联网 发布:欧莱雅男士 知乎 编辑:程序博客网 时间:2024/04/30 14:43
==============================================================
写代码过程中犯的错误:
List<Item> 没有new
checkbox1在InitializeComponent()前调用。
sampleRun中的方法在sampleRun实例化之前调用了。
==============================================================
Form1的c sharp:
public partial class Form1 : Form { private Workspace m_workspace; private MapControl m_mapControl; private SampleRun m_sampleRun; public Form1() { InitializeComponent(); this.Load += new EventHandler(Form1_Load); this.FormClosing += new FormClosingEventHandler(Form1_FormClosing); this.checkBox1.CheckedChanged += new EventHandler(checkBox1_CheckedChanged); this.panel2.Paint += panel2_Paint; m_workspace = new Workspace(this.components); m_mapControl = new MapControl(); m_mapControl.Dock = DockStyle.Fill; } void panel2_Paint(object sender, PaintEventArgs e) { if (checkBox1.Checked && m_sampleRun.listItems.Count > 0) { panel3.BackColor = m_sampleRun.listItems[0].itemColor; label1.Text = m_sampleRun.listItems[0].itemName; panel4.BackColor = m_sampleRun.listItems[1].itemColor; label1.Text = m_sampleRun.listItems[1].itemName; Panel[] arrPanel = new Panel[]{panel3,panel4,panel5,panel6,panel7,panel8,panel9,panel10,panel11,panel12,panel13}; Label[] arrLabel = new Label[] { label1, label2, label3, label4, label5, label6, label7, label8, label9, label10, label11 }; for (int i = 0; i < 11; i++) { arrPanel[i].BackColor = m_sampleRun.listItems[i].itemColor; arrLabel[i].Text = m_sampleRun.listItems[i].itemName; } } } private void checkBox1_CheckedChanged(object sender, EventArgs e) { m_sampleRun.ShowThemeLayer(checkBox1.Checked); this.panel2.Visible = checkBox1.Checked; } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { m_mapControl.Dispose(); m_workspace.Dispose(); } private void Form1_Load(object sender, EventArgs e) { m_sampleRun = new SampleRun(m_workspace, m_mapControl); checkBox1.Checked = true; base.Controls.Add(m_mapControl); } }
===========================
SampleRun类:
namespace uniqueDisplayTheme{ internal class SampleRun { private Workspace m_workspace; private MapControl m_mapControl; private string layerName; public List<Item> listItems; private ThemeUnique themeUnique; public SampleRun(Workspace workspace, MapControl mapControl) { this.m_workspace = workspace; this.m_mapControl = mapControl; this.m_mapControl.Map.Workspace = m_workspace; this.listItems = new List<Item>(); Initialize(); } private void Initialize() { WorkspaceConnectionInfo conInfo = new WorkspaceConnectionInfo(@"D:\souce\supermap\SampleData\ThematicMaps\Thematicmaps.smwu"); m_workspace.Open(conInfo); m_mapControl.Map.Open(m_workspace.Maps[0]); Dataset dataset = m_workspace.Datasources[0].Datasets["Landuse_R"]; //地图上加图层 m_mapControl.Map.Layers.Add(dataset, true); m_mapControl.Action = Action.Pan; for (int i = 0; i < m_mapControl.Map.Layers.Count; i++) { Layer layer = m_mapControl.Map.Layers[i]; layer.IsSelectable = true; } m_mapControl.Map.ViewEntire(); } public void ShowThemeLayer(bool isShow) { m_mapControl.Map.Layers.Remove(layerName); if (isShow) { DatasetVector datasetVector = m_workspace.Datasources[0].Datasets["Landuse_R"] as DatasetVector; //创建专题图 themeUnique = new ThemeUnique(); themeUnique.UniqueExpression = "LandType"; //把单值专题图子项添加到单值专题图类中 CreateThemeItem(Color.FromArgb(206, 101, 156), "城市"); CreateThemeItem(Color.FromArgb(181, 178, 181), "旱地"); CreateThemeItem(Color.FromArgb(255, 255, 155), "水浇地"); CreateThemeItem(Color.FromArgb(254, 175, 136), "水田"); CreateThemeItem(Color.FromArgb(115, 77, 0), "沙漠"); CreateThemeItem(Color.FromArgb(173, 170, 0), "沼泽"); CreateThemeItem(Color.FromArgb(151, 219, 242), "湖泊水库"); CreateThemeItem(Color.FromArgb(90, 138, 66), "灌丛"); CreateThemeItem(Color.FromArgb(0, 113, 74), "用材林"); CreateThemeItem(Color.FromArgb(0, 170, 132), "经济林"); CreateThemeItem(Color.FromArgb(90, 179, 40), "草地"); Layer layer = m_mapControl.Map.Layers.Add(datasetVector, themeUnique, true); layerName = layer.Name; //StringBuilder strbuild = new StringBuilder(); //foreach (Layer layer1 in m_mapControl.Map.Layers) //{ // strbuild.Append(layer1.Name + ","); //} //System.Windows.Forms.MessageBox.Show(strbuild.ToString()); } m_mapControl.Map.Refresh(); } /// <summary> /// 创建单值专题图子项,并添加到单值专题图类中 /// </summary> /// <param name="itemcolor"></param> /// <param name="itemname"></param> public void CreateThemeItem(Color itemcolor, string itemname) { GeoStyle geostyle = new GeoStyle(); geostyle.FillForeColor = itemcolor; geostyle.FillOpaqueRate = 80; geostyle.LineSymbolID = 5; ThemeUniqueItem themeItem = new ThemeUniqueItem(); themeItem.Caption = itemname; themeItem.Style = geostyle; themeItem.IsVisible = true; themeItem.Unique = itemname; Item item = new Item(itemname, itemcolor);//创建 名字+颜色的对象 listItems.Add(item); themeUnique.Add(themeItem); } } /// <summary> /// 构造一个类,用于存放单值专题图索引记录名 和 颜色 /// </summary> class Item { private string name; private Color color; public string itemName { get { return name; } } public Color itemColor { get { return color; } } public Item(string name, Color color) { this.name = name; this.color = color; } }}
- 修改SampleCode 例子代码 单值专题图
- 单例模式代码例子
- iOS samplecode
- libevent专题1-Libevent使用例子,从简单到复杂
- 单实例 程序 例子 修改hosts
- 单值专题图(有颜色带)
- Supermap 组合单值专题图与标签专题图示例
- java单例模式的代码例子
- ArcEngine 专题图关键代码
- 一个 NHIBERNATE+GRIDVIEW 添加删除修改的例子(单表)
- QA 基于开发的 JavaScript 修改测试数据和代码查看返回值的小例子
- MapXtreme2004代码 简单专题图的显示
- apache dbutils的CURD(增,修改,查询,删除)例子代码
- python实现更新页面内容的小例子,已经修改成“更新订饭菜单“
- Java 代码质量专题
- 专题9-代码搬移
- 单例模式例子
- 单例--例子
- Android -使用DOM(文档对象模型)解析XML文件
- 单例设计模式
- vc控制台项目wprinf无法正确输出中文的解决办法
- FilterDispatcher的作用
- SSL协议
- 修改SampleCode 例子代码 单值专题图
- Unbuntu12.04系统安装配置DHCP服务器
- 好听的钢琴曲
- [黑马程序员]--Java语言基础二
- 线程
- 生成模型与判别模型
- C++中explicit
- ubuntu 10.04启动到文本模式的设置
- 安卓存储基本用法之SharedPreferences和内部外部存储