修改SampleCode 例子代碼 單值專題圖

來源:互聯網
上載者:User

 

 ==============================================================

寫代碼過程中犯的錯誤:

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;        }    }}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.