Пример #1
0
        public override void Draw(int int_0, Rectangle rectangle_0, double double_0, double double_1)
        {
            IStyleGalleryClass styleGalleryClass = null;

            if (this.m_pStyle is IScaleBar)
            {
                styleGalleryClass = new ScaleBarStyleGalleryClass();
            }
            else if (this.m_pStyle is IScaleText)
            {
                styleGalleryClass = new ScaleTextStyleGalleryClass();
            }
            else if (this.m_pStyle is INorthArrow)
            {
                styleGalleryClass = new NorthArrowStyleGalleryClass();
            }
            if (styleGalleryClass != null)
            {
                tagRECT tagRECT = default(tagRECT);
                tagRECT.left   = rectangle_0.Left;
                tagRECT.right  = rectangle_0.Right;
                tagRECT.top    = rectangle_0.Top;
                tagRECT.bottom = rectangle_0.Bottom;
                styleGalleryClass.Preview(this.m_pStyle, int_0, ref tagRECT);
            }
        }
Пример #2
0
 public Image CreateImageFromStyleGalleryClass(IStyleGalleryClass pStyleGalleryClass, object pSymbol, int iWidth, int iHeight, Color pBackColor)
 {
     try
     {
         if (pStyleGalleryClass == null)
         {
             return(null);
         }
         if (pSymbol == null)
         {
             return(null);
         }
         if (iWidth <= 0)
         {
             iWidth = 0x20;
         }
         if (iHeight <= 0)
         {
             iHeight = 0x20;
         }
         Bitmap image = null;
         image = new Bitmap(iWidth, iHeight);
         Graphics graphics = null;
         graphics = Graphics.FromImage(image);
         if (!pBackColor.IsEmpty)
         {
             SolidBrush brush = new SolidBrush(pBackColor);
             graphics.FillRectangle(brush, 0, 0, iWidth, iHeight);
         }
         IntPtr hdc = new IntPtr();
         hdc = graphics.GetHdc();
         if (hdc.ToInt64() == 0L)
         {
             return(null);
         }
         tagRECT rectangle = new tagRECT();
         try
         {
             pStyleGalleryClass.Preview(pSymbol, int.Parse(hdc.ToInt64().ToString()), ref rectangle);
         }
         catch (Exception)
         {
         }
         graphics.ReleaseHdc(hdc);
         return(image);
     }
     catch (Exception exception)
     {
         this.mErrOpt.ErrorOperate(this.mSubSysName, "FunFactory.SymbolFun", "CreateImageFromStyleGalleryClass", exception.GetHashCode().ToString(), exception.Source, exception.Message, "", "", "");
         return(null);
     }
 }
Пример #3
0
 public 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;
 }
Пример #4
0
        public 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);
        }
Пример #5
0
        ///<summary>
        ///获取符号库中符号
        ///</summary>
        ///<param name="sServerStylePath">符号库全路径名称</param>
        ///<param name="sGalleryClassName">GalleryClass名称</param>
        ///<param name="symbolName">符号名称</param>
        ///<returns>符号</returns>
        private ISymbol GetSymbol(string sServerStylePath, string sGalleryClassName, string symbolName)
        {
            try
            {
                //ServerStyleGallery对象
                IStyleGallery        pStyleGaller         = new ServerStyleGalleryClass();
                IStyleGalleryStorage pStyleGalleryStorage = pStyleGaller as IStyleGalleryStorage;

                IEnumStyleGalleryItem pEnumSyleGalleryItem = null;
                IStyleGalleryItem     pStyleGallerItem     = null;
                IStyleGalleryClass    pStyleGalleryClass   = null;
                //使用IStyleGalleryStorage接口的AddFile方法加载ServerStyle文件
                pStyleGalleryStorage.AddFile(sServerStylePath);
                //遍历ServerGallery中的Class
                for (int i = 0; i < pStyleGaller.ClassCount; i++)
                {
                    pStyleGalleryClass = pStyleGaller.get_Class(i);
                    if (pStyleGalleryClass.Name != sGalleryClassName)
                    {
                        continue;
                    }
                    //获取EnumStyleGalleryItem对象
                    pEnumSyleGalleryItem = pStyleGaller.get_Items(sGalleryClassName, sServerStylePath, "");
                    pEnumSyleGalleryItem.Reset();
                    //遍历pEnumSyleGalleryItem
                    pStyleGallerItem = pEnumSyleGalleryItem.Next();
                    while (pStyleGallerItem != null)
                    {
                        if (pStyleGallerItem.Name == symbolName)
                        {
                            //获取符号
                            ISymbol pSymbol = pStyleGallerItem.Item as ISymbol;
                            System.Runtime.InteropServices.Marshal.ReleaseComObject(pEnumSyleGalleryItem);
                            System.Runtime.InteropServices.Marshal.ReleaseComObject(pStyleGalleryClass);
                            return(pSymbol);
                        }
                        pStyleGallerItem = pEnumSyleGalleryItem.Next();
                    }
                }
                System.Runtime.InteropServices.Marshal.ReleaseComObject(pEnumSyleGalleryItem);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(pStyleGalleryClass);
                return(null);
            }
            catch (Exception Err)
            {
                MessageBox.Show(Err.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return(null);
            }
        }
Пример #6
0
        public static Bitmap StyleGalleryItemToBmp(int pWidth, int pHeight, IStyleGalleryClass pStyleGalleryClass, IStyleGalleryItem pStyleGalleryItem)
        {
            ///  通过符号库中的IStyleGalleryItem 和 IStyleGalleryClass类别生成图片预览

            Bitmap bitmap = new Bitmap(pWidth, pHeight);
            System.Drawing.Graphics pGraphics = System.Drawing.Graphics.FromImage(bitmap);
            tagRECT rect = new tagRECT();
            rect.right = bitmap.Width;
            rect.bottom = bitmap.Height;
            //生成预览
            IntPtr hdc = new IntPtr();
            hdc = pGraphics.GetHdc();
            pStyleGalleryClass.Preview(pStyleGalleryItem.Item, hdc.ToInt32(), ref rect);
            pGraphics.ReleaseHdc(hdc);
            pGraphics.Dispose();
            return bitmap;
        }
Пример #7
0
        /// <summary>
        /// 获取指定种类,指定符号id的符号
        /// </summary>
        /// <param name="sGallery">符号种类(e.g.填充颜色)</param>
        /// <param name="id">符号id</param>
        /// <returns>符号</returns>
        public static ISymbol GetStyleSymbol(string sGallery, int id)
        {
            try
            {
                IStyleGallery        pStyleGallery        = new ServerStyleGalleryClass();
                IStyleGalleryStorage pStyleGalleryStorage = pStyleGallery as IStyleGalleryStorage;

                for (int i = pStyleGalleryStorage.FileCount - 1; i >= 0; i--)
                {
                    pStyleGalleryStorage.RemoveFile(pStyleGalleryStorage.get_File(i));
                }

                pStyleGalleryStorage.AddFile(_STYLEFILE);
                IEnumStyleGalleryItem pEnumStyleItem = pStyleGallery.get_Items(sGallery, _STYLEFILE, "");
                pEnumStyleItem.Reset();
                IStyleGalleryItem  mStyleItem  = pEnumStyleItem.Next();
                IStyleGalleryClass mStyleClass = null;
                for (int i = 0; i < pStyleGallery.ClassCount; i++)
                {
                    mStyleClass = pStyleGallery.get_Class(i);
                    string str = mStyleClass.Name;
                    if (str == sGallery)
                    {
                        break;
                    }
                }

                ISymbol result = null;
                while (mStyleItem != null)
                {
                    if (mStyleItem.ID == id)
                    {
                        result = mStyleItem.Item as ISymbol;
                        break;
                    }
                    mStyleItem = pEnumStyleItem.Next();
                }
                System.Runtime.InteropServices.Marshal.ReleaseComObject(pEnumStyleItem);
                return(result);
            }
            catch
            {
                return(null);
            }
        }
Пример #8
0
        public static Bitmap StyleGalleryItemToBmp(int pWidth, int pHeight, IStyleGalleryClass pStyleGalleryClass, IStyleGalleryItem pStyleGalleryItem)
        { ///  通过符号库中的IStyleGalleryItem 和 IStyleGalleryClass类别生成图片预览
            Bitmap bitmap = new Bitmap(pWidth, pHeight);

            System.Drawing.Graphics pGraphics = System.Drawing.Graphics.FromImage(bitmap);
            tagRECT rect = new tagRECT();

            rect.right  = bitmap.Width;
            rect.bottom = bitmap.Height;
            //生成预览
            IntPtr hdc = new IntPtr();

            hdc = pGraphics.GetHdc();
            pStyleGalleryClass.Preview(pStyleGalleryItem.Item, hdc.ToInt32(), ref rect);
            pGraphics.ReleaseHdc(hdc);
            pGraphics.Dispose();
            return(bitmap);
        }
Пример #9
0
        public Bitmap StyleGalleryItemToBmp(int iWidth, int iHeight, IStyleGalleryClass mStyleGlyCs, IStyleGalleryItem mStyleGlyItem)
        {
            //建立符合规格的内存图片
            Bitmap   bmp    = new Bitmap(iWidth, iHeight);
            Graphics gImage = Graphics.FromImage(bmp);
            //建立对应的符号显示范围
            tagRECT rect = new tagRECT();

            rect.right  = bmp.Width;
            rect.bottom = bmp.Height;
            //生成预览
            System.IntPtr hdc = new IntPtr();
            hdc = gImage.GetHdc();
            //在图片上绘制符号
            mStyleGlyCs.Preview(mStyleGlyItem.Item, hdc.ToInt32(), ref rect);
            gImage.ReleaseHdc(hdc);
            gImage.Dispose();
            return(bmp);
        }
Пример #10
0
        //通过指定的高度和宽度生成图象
        public System.Drawing.Bitmap StyleGalleryItemToBmp(
            int iWidth,
            int iHeight,
            IStyleGalleryClass styleGalleryClass,
            IStyleGalleryItem styleGalleryItem)
        {
            Bitmap   bmp    = new Bitmap(iWidth, iHeight);
            Graphics gImage = Graphics.FromImage(bmp);


            ESRI.ArcGIS.esriSystem.tagRECT rect = new ESRI.ArcGIS.esriSystem.tagRECT();
            rect.right  = bmp.Width;
            rect.bottom = bmp.Height;
            //生成预览
            System.IntPtr hdc = new IntPtr();
            hdc = gImage.GetHdc();
            styleGalleryClass.Preview(styleGalleryItem.Item, hdc.ToInt32(), ref rect);
            gImage.ReleaseHdc(hdc);
            gImage.Dispose();
            return(bmp);
        }
Пример #11
0
        public Bitmap StyleGalleryItemToBmp(int iWidth, int iHeight, IStyleGalleryClass mStyleGlyCs, IStyleGalleryItem mStyleGlyItem)
        {
            //建立符合规格的内存图片
            Bitmap bmp = new Bitmap(iWidth, iHeight);
            Graphics gImage = Graphics.FromImage(bmp);
            //建立对应的符号显示范围
            tagRECT rect = new tagRECT();
            rect.right = bmp.Width;
            rect.bottom = bmp.Height;
            //生成预览
            System.IntPtr hdc = new IntPtr();
            hdc = gImage.GetHdc();
            //在图片上绘制符号
            mStyleGlyCs.Preview(mStyleGlyItem.Item, hdc.ToInt32(), ref rect);
            gImage.ReleaseHdc(hdc);
            gImage.Dispose();

            return bmp;
        }
Пример #12
0
        /// <summary>
        /// 读取ServerStyle中的文件并显示
        /// </summary>
        /// <param name="StyleGalleryClass">符号文件的种类</param>
        /// <param name="CategoryClass">符号的种类</param>
        /// <param name="cbxCategory">符号文件的种类的容器</param>
        /// <param name="lvSymbol">符号位图的容器</param>
        public static void ReadServerStyle(string StyleGalleryClass, string CategoryClass, ComboBox cbxCategory, ListView lvSymbol)
        {
            lvSymbol.Items.Clear();
            lvSymbol.LargeImageList.Images.Clear();
            IStyleGallery        pStyleGallery        = new ServerStyleGalleryClass();
            IStyleGalleryStorage pStyleGalleryStorage = pStyleGallery as IStyleGalleryStorage;

            // 增加符号文件
            //pStyleGalleryStorage.TargetFile = _STYLEFILE;
            for (int i = pStyleGalleryStorage.FileCount - 1; i >= 0; i--)
            {
                pStyleGalleryStorage.RemoveFile(pStyleGalleryStorage.get_File(i));
            }
            pStyleGalleryStorage.AddFile(_STYLEFILE);
            // 根据当前符号的类别和文件得到符号的枚举循环子,符号类别包括Fill Symbol,Line Symbol等
            IEnumStyleGalleryItem pEnumStyleItem = pStyleGallery.get_Items(StyleGalleryClass, _STYLEFILE, "");

            // 得到符号文件类别的各个条目,增加到一个Combox中
            if (cbxCategory != null)
            {
                cbxCategory.Items.Clear();
                cbxCategory.Items.Add(_ALLSYMBOLS);
                IEnumBSTR pEnumBSTR = pStyleGallery.get_Categories(StyleGalleryClass);
                pEnumBSTR.Reset();
                string Category = "";
                Category = pEnumBSTR.Next();
                while (Category != null)
                {
                    cbxCategory.Items.Add(Category);
                    Category = pEnumBSTR.Next();
                }
            }

            pEnumStyleItem.Reset();
            IStyleGalleryItem  mStyleItem  = pEnumStyleItem.Next();
            IStyleGalleryClass mStyleClass = null;

            for (int i = 0; i < pStyleGallery.ClassCount; i++)
            {
                mStyleClass = pStyleGallery.get_Class(i);
                string str = mStyleClass.Name;
                if (str == StyleGalleryClass)
                {
                    break;
                }
            }

            // 得到各个符号并转化为图片
            int       ImageIndex = 0;
            ImageList Largeimage = lvSymbol.LargeImageList;

            if (CategoryClass == "" || CategoryClass == _ALLSYMBOLS)
            {
                while (mStyleItem != null)
                {
                    // 调用另一个类的方法将符号转化为图片
                    Bitmap bmpB = StyleGalleryItemToBmp(32, 32, mStyleClass, mStyleItem);
                    Largeimage.Images.Add(bmpB);
                    ListViewItem lvItem = new ListViewItem(new string[] { mStyleItem.Name, mStyleItem.ID.ToString(), mStyleItem.Category }, ImageIndex);
                    lvSymbol.Items.Add(lvItem);
                    ImageIndex++;
                    mStyleItem = pEnumStyleItem.Next();
                }
            }
            else
            {
                while (mStyleItem != null)
                {
                    if (CategoryClass == mStyleItem.Category)
                    {
                        // 调用另一个类的方法将符号转化为图片
                        Bitmap bmpB = StyleGalleryItemToBmp(32, 32, mStyleClass, mStyleItem);
                        Largeimage.Images.Add(bmpB);
                        ListViewItem lvItem = new ListViewItem(new string[] { mStyleItem.Name, mStyleItem.ID.ToString(), mStyleItem.Category }, ImageIndex);
                        lvSymbol.Items.Add(lvItem);
                        ImageIndex++;
                    }
                    mStyleItem = pEnumStyleItem.Next();
                }
            }
            // 必须采用此方式进行释放,第二次才能正常读取
            System.Runtime.InteropServices.Marshal.ReleaseComObject(pEnumStyleItem);
        }