现在的位置: 首页 > 综合 > 正文

TOC图例符号转换到ListView

2012年11月23日 ⁄ 综合 ⁄ 共 1979字 ⁄ 字号 评论关闭

TOC图例符号转换到ListView

 

 //符号转换
Bitmap PreviewSymbol(IStyleGalleryClass pStyleGalleryClass, object galleryItem, int imgWidth, int imgHeight)
        {
            Bitmap bitmap = new Bitmap(imgWidth, imgHeight);
            Graphics graphics = Graphics.FromImage(bitmap);
            tagRECT rect = new tagRECT();
            rect.right = bitmap.Width;
            rect.bottom = bitmap.Height;
            System.IntPtr hdc = graphics.GetHdc();
            pStyleGalleryClass.Preview(galleryItem, hdc.ToInt32(), ref rect);
            graphics.ReleaseHdc(hdc);
            graphics.Dispose();
            return bitmap;
        }

//遍历渲染,逐个转换符号
ILayer pLayer = axMapControl1.get_Layer(0);
            IGeoFeatureLayer pGeoFeatureLayer = pLayer as IGeoFeatureLayer;
            IFeatureRenderer pFeatureRenderer = pGeoFeatureLayer.Renderer;
            if(pFeatureRenderer is IUniqueValueRenderer)
             {
                IStyleGalleryClass pStyleGalleryClass = new FillSymbolStyleGalleryClassClass();//我这里用面测试的,改造时需要动态的使用
                IUniqueValueRenderer pUniqueValueRenderer = pFeatureRenderer as IUniqueValueRenderer;
                ISymbol pSymbol = null;
                ListViewItem listViewItem;
                Image image;
                string value;
                imageList1.Images.Clear();
                listView1.Items.Clear();
                for (int i = 0; i < pUniqueValueRenderer.ValueCount; i++)
                {
                    listViewItem = new ListViewItem();
                    value = pUniqueValueRenderer.get_Value(i);
                    pSymbol = pUniqueValueRenderer.get_Symbol(value);
                    image = PreviewSymbol(pStyleGalleryClass, pSymbol, imageList1.ImageSize.Width, imageList1.ImageSize.Height);
                    imageList1.Images.Add(value,image);
                    listViewItem.ImageKey = value;
                    listViewItem.Text = value;
                    listViewItem.SubItems.Add(value);
                    listView1.Items.Add(listViewItem);
                }
            }
            else
            {
                MessageBox.Show("不是楼主想要的东东。");
            }

 

抱歉!评论已关闭.