SimpleGIS
路人甲
路人甲
  • 注册日期2007-03-22
  • 发帖数18
  • QQ389240138
  • 铜币172枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:4401回复:10

[原创]我的原创第一贴:利用AE读取Style符号库生成的符号控件

楼主#
更多 发布于:2007-03-29 12:52
读取了三个style符号文件,提供icolorSelector接口,部分代码如下:<BR>        StyleGalleryClass pStyleGallery = null;<BR>            pStyleGallery = new StyleGalleryClass();<BR>            pStyleGallery.AddFile(pStyleGallery.DefaultStylePath + "ESRI.style");<BR>            pStyleGallery.AddFile(pStyleGallery.DefaultStylePath + "civic.style");<BR>            pStyleGallery.AddFile(pStyleGallery.DefaultStylePath + "mining..style");<BR><BR>            IColorSelector pColorSelector = new ColorSelector();<BR>            pColorSelector.StyleGallery = pStyleGallery;<BR>            pColorSelector.Color = colorButton1.MyColor;<BR>            pColorSelector.Location = PointToScreen(new Point((sender as ColorButton).Left, (sender as ColorButton).Bottom));<BR>            if (pColorSelector.DoModal())<BR>            {<BR>                colorButton1.MyColor = pColorSelector.Color;<BR>            }<BR><BR>====================<BR>有需要的朋友可免费索取使用.<BR>====================<BR><BR>颜色控件代码如下,仅供交流:<BR>using System;<BR>using System.Collections.Generic;<BR>using System.ComponentModel;<BR>using System.Collections;<BR>using System.Data;<BR>using System.Drawing;<BR>using System.Text;<BR>using System.Windows.Forms;<BR>using ESRI.ArcGIS.esriSystem;<BR>using ESRI.ArcGIS.Display;<BR>using Carto.DisplayLib;<BR>namespace Display.DisplayControl<BR>{<BR>    public partial class ColorPanel : Form<BR>    {<BR>        private IArray m_pColorArray;<BR>        private Color m_pSelectedColor;<BR>        private int m_iCols = 12;<BR>        private int m_iRows = -1;<BR>        private ToolTip m_TipColor;<BR>        private int m_iColorIndex;<BR>        private IList m_pNodes;<BR>        private Button m_btnCancel;<BR>        public ColorPanel(IArray pColorArray)<BR>        {<BR>            InitializeComponent();<BR>            m_btnCancel = new Button();<BR>            m_btnCancel.Click += new EventHandler(m_btnCancel_Click);<BR>            m_btnCancel.Text = "取消";<BR>            m_TipColor = new ToolTip();<BR>            m_iColorIndex = -1;<BR>            m_pColorArray = pColorArray;<BR>            m_iRows = m_pColorArray.Count / m_iCols;<BR>            if (m_pColorArray.Count % m_iCols != 0)<BR>            {<BR>                m_iRows = m_iRows + 1;<BR>            }<BR>            this.FormBorderStyle = FormBorderStyle.None;<BR>            this.MinimizeBox = false;<BR>            this.MaximizeBox = false;<BR>            this.ControlBox = false;<BR>            this.ShowInTaskbar = false;<BR>            this.TopMost = true;<BR>            SetStyle(ControlStyles.DoubleBuffer, true);<BR>            SetStyle(ControlStyles.UserPaint, true);<BR>            SetStyle(ControlStyles.AllPaintingInWmPaint, true);<BR>            this.CenterToScreen();<BR>            this.Capture = true;<BR>            m_pNodes = new ArrayList();<BR>            this.CreateNodes();<BR>            this.Width = m_btnCancel.Right + 6;<BR>            this.Height = m_btnCancel.Bottom + 5;<BR>            //this.Width = (m_pNodes[m_pNodes.Count - 1] as ColorNode).NodeRectangle.Right + 6;<BR>            //this.Height = (m_pNodes[m_pNodes.Count - 1] as ColorNode).NodeRectangle.Bottom + 5;<BR>        }<BR>        void m_btnCancel_Click(object sender, EventArgs e)<BR>        {<BR>            this.DialogResult = DialogResult.Cancel;<BR>        }<BR>        public Color SelectedColor   //返回的颜色<BR>        {<BR>            get<BR>            {<BR>                return m_pSelectedColor;<BR>            }<BR>            set<BR>            {<BR>                m_pSelectedColor = value;<BR>            }<BR>        }<BR>        //为颜色色盘添加颜色节点<BR>        private void CreateNodes()<BR>        {<BR>            bool bIsSelected = false;<BR>            //先添加"No Color"按钮<BR>            ColorNode pColorNode = new ColorNode();<BR>            pColorNode.Text = "无色";<BR>            pColorNode.NodeColor = Color.Transparent;<BR>            Point pPt = new Point(6, 5);<BR>            pColorNode.NodeRectangle = new Rectangle(pPt, new Size(209, 16));<BR>            if (this.m_pSelectedColor == Color.Transparent)<BR>            {<BR>                bIsSelected = true;<BR>                pColorNode.Selected = true;<BR>            }<BR>            m_pNodes.Add(pColorNode);<BR>            pPt.Y = pPt.Y + 23;<BR>            MyColorClass pColorClass = null;<BR>            for (int i = 0; i < m_pColorArray.Count; i++)<BR>            {<BR>                pColorClass = m_pColorArray.get_Element(i) as MyColorClass;<BR>                pColorNode = new ColorNode();<BR>                pColorNode.NodeColor = pColorClass.MyColor;<BR>                pColorNode.TipText = pColorClass.ColorName;<BR>                pColorNode.NodeRectangle = new Rectangle(pPt, new Size(11, 11));<BR>                if (bIsSelected == false)<BR>                {<BR>                    if (this.m_pSelectedColor == pColorClass.MyColor)<BR>                    {<BR>                        bIsSelected = true;<BR>                        pColorNode.Selected = true;<BR>                    }<BR>                }<BR>                m_pNodes.Add(pColorNode);<BR>                if ((i + 1) % 12 == 0)<BR>                {<BR>                    pPt.X = 6;<BR>                    pPt.Y = pPt.Y + 18;<BR>                }<BR>                else<BR>                    pPt.X = pPt.X + 18;<BR>            }<BR>            pPt.X = 6;<BR>            if (m_pColorArray.Count % 12 != 0)<BR>            {<BR>                pPt.Y = pPt.Y + 18;<BR>            }<BR>            //分隔线<BR>            pPt.Y = pPt.Y + 6;<BR>            //添加"更多颜色按钮"<BR>            pColorNode = new ColorNode();<BR>            pColorNode.Text = "更多颜色...";<BR>            pColorNode.NodeColor = this.BackColor;<BR>            pColorNode.NodeRectangle = new Rectangle(pPt, new Size(150, 16));<BR>            m_pNodes.Add(pColorNode);<BR>            //添加取消按钮<BR>            m_btnCancel.Location = new Point(pColorNode.NodeRectangle.Right + 10, pColorNode.NodeRectangle.Location.Y - 3);<BR>            m_btnCancel.Height = 23;<BR>            m_btnCancel.Width = 52;<BR>            this.Controls.Add(m_btnCancel);<BR>        }<BR>        private void ColorPanel_Paint(object sender, PaintEventArgs e)<BR>        {<BR>            for (int i = 0; i < m_pNodes.Count; i++)<BR>            {<BR>                ColorNode pColorNode = m_pNodes<I> as ColorNode;<BR>                if (i == m_pNodes.Count - 1)<BR>                {<BR>                    //画分隔线<BR>                    DrawSperator(e.Graphics, 6, pColorNode.NodeRectangle.Top - 7, this.Width - 12);<BR>                }<BR>                DrawButton(e.Graphics, pColorNode,i);<BR>            }<BR>        }<BR>        private void DrawSperator(Graphics g, int x, int y,int iWidth)<BR>        {<BR>            Pen darkPen = new Pen(SystemColors.ControlDark);<BR>            Pen lightPen = new Pen(SystemColors.ControlLightLight);<BR>            g.DrawLine(darkPen, x, y, iWidth, y);<BR>            g.DrawLine(lightPen, x, y + 1, iWidth, y + 1);<BR>        }<BR>        private void DrawButton(Graphics g, ColorNode pColorNode,int iIndex)<BR>        {<BR>            Pen darkPen = new Pen(SystemColors.ControlDark);<BR>            Pen lightPen = new Pen(SystemColors.ControlLightLight);<BR>            SolidBrush lightBrush = new SolidBrush(SystemColors.ControlLightLight);<BR>            int iX, iY;<BR>            iX = pColorNode.NodeRectangle.Location.X;<BR>            iY = pColorNode.NodeRectangle.Location.Y;<BR>            if (m_iColorIndex == iIndex)<BR>            {<BR>                g.DrawRectangle(lightPen, iX-3,iY-3, pColorNode.NodeRectangle.Width+6, pColorNode.NodeRectangle.Height+6);<BR>                g.DrawLine(darkPen, iX - 2, iY + pColorNode.NodeRectangle.Height+3, iX + pColorNode.NodeRectangle.Width + 3, iY + pColorNode.NodeRectangle.Height + 3);<BR>                g.DrawLine(darkPen, iX + pColorNode.NodeRectangle.Width + 3, iY - 2, iX + pColorNode.NodeRectangle.Width + 3, iY + pColorNode.NodeRectangle.Height + 3);<BR>            }<BR>            else if (pColorNode.Selected)<BR>            {<BR>                g.FillRectangle(lightBrush, iX - 3, iY - 3, pColorNode.NodeRectangle.Width+7, pColorNode.NodeRectangle.Height+7);<BR>                g.DrawLine(darkPen, iX - 3, iY - 3, iX + pColorNode.NodeRectangle.Width+2, iY - 3);<BR>                g.DrawLine(darkPen, iX - 3, iY - 3, iX - 3, iY + pColorNode.NodeRectangle.Height+2);<BR>            }<BR>            if (iIndex!=m_pNodes.Count-1)<BR>            {<BR>                g.DrawRectangle(darkPen, pColorNode.NodeRectangle);<BR>            }<BR>            g.FillRectangle(new SolidBrush(pColorNode.NodeColor), pColorNode.NodeRectangle);<BR>            Font pFont = new Font("Arial", 8);<BR>            SizeF pSize = g.MeasureString(pColorNode.Text, pFont);<BR>            PointF pPoint = new PointF(pColorNode.NodeRectangle.Left + (pColorNode.NodeRectangle.Width - pSize.Width) / 2, pColorNode.NodeRectangle.Top + (pColorNode.NodeRectangle.Height - pSize.Height) / 2);<BR>            g.DrawString(pColorNode.Text, pFont, new SolidBrush(Color.Black), pPoint);<BR>        }<BR>}</I><BR>
<DIV >private void ColorPanel_MouseDown(object sender, MouseEventArgs e)<BR>        {<BR>            if (this.RectangleToScreen(this.ClientRectangle).Contains(Cursor.Position))<BR>            {<BR>                Point pPt = new Point(e.X, e.Y);<BR>                ColorNode pColorNode = null;<BR>                for (int i = 0; i < m_pNodes.Count; i++)<BR>                {<BR>                    pColorNode = m_pNodes<I> as ColorNode;<BR>                    if (pColorNode.NodeRectangle.Contains(pPt))<BR>                    {<BR>                        if (i == m_pNodes.Count - 1)<BR>                        {<BR>                            this.Visible = false;<BR>                            ColorDialog dlg = new ColorDialog();<BR>                            dlg.Color = this.SelectedColor;<BR>                            dlg.FullOpen = true;<BR>                            if (dlg.ShowDialog(this) == DialogResult.OK)<BR>                            {<BR>                                this.SelectedColor = dlg.Color;<BR>                                this.DialogResult = DialogResult.OK;<BR>                            }<BR>                        }<BR>                        else<BR>                        {<BR>                            this.SelectedColor = pColorNode.NodeColor;<BR>                            this.DialogResult = DialogResult.OK;<BR>                        }<BR>                        this.Close();<BR>                        return;<BR>                    }<BR>                }<BR>                this.Close();<BR>                //return;<BR>            }<BR>            else<BR>                this.DialogResult = DialogResult.Cancel;<BR>                this.Close();<BR>        }<BR><BR>        private void ColorPanel_KeyDown(object sender, KeyEventArgs e)<BR>        {<BR>            if (e.KeyData==Keys.Escape)<BR>            {<BR>                this.Close();<BR>            }<BR>        }<BR><BR>        private void ColorPanel_MouseMove(object sender, MouseEventArgs e)<BR>        {<BR>            if (this.RectangleToScreen(this.ClientRectangle).Contains(Cursor.Position))<BR>            {<BR>                Point pPt = new Point(e.X, e.Y);<BR>                ColorNode pColorNode = null;<BR>                for (int i = 0; i < m_pNodes.Count; i++)<BR>                {<BR>                    pColorNode = m_pNodes<I> as ColorNode;<BR>                    if (pColorNode.NodeRectangle.Contains(pPt))<BR>                    {<BR>                        if (m_iColorIndex!=i)<BR>                        {<BR>                            m_iColorIndex = i;<BR>                            this.Invalidate();<BR>                        }<BR>                        if (i!=0 ;; i!=m_pNodes.Count-1 )<BR>                        {<BR>                            m_TipColor.SetToolTip(this, pColorNode.TipText);<BR>                        }<BR>                        return;<BR>                    }<BR>                }<BR>            }<BR>        }<BR><BR>    }<BR><BR>    public class MyColorClass<BR>    {<BR>        private Color m_pColor;<BR>        private string m_sColorName;<BR><BR>        public MyColorClass()<BR>        {<BR>            m_pColor = Color.Transparent;<BR>            m_sColorName = "";<BR>        }<BR>        public Color MyColor<BR>        {<BR>            get<BR>            {<BR>                return m_pColor;<BR>            }<BR>            set<BR>            {<BR>                m_pColor = value;<BR>            }<BR>        }<BR><BR>        public string ColorName<BR>        {<BR>            get<BR>            {<BR>                return m_sColorName;<BR>            }<BR>            set<BR>            {<BR>                m_sColorName = value;<BR>            }<BR>        }<BR>    }<BR><BR>    internal class ColorNode<BR>    {<BR>        private Color m_pNodeColor;<BR>        private System.Drawing.Rectangle m_RectNode;<BR>        private string m_sTipText;<BR>        private bool m_bSelected;<BR>        private string m_sText;<BR><BR>        public ColorNode()<BR>        {<BR>            m_pNodeColor = Color.Transparent;<BR>            m_RectNode = new Rectangle(0, 0, 0, 0);<BR>            m_sTipText = "";<BR>            m_bSelected = false;<BR>        }<BR><BR>        public Color NodeColor<BR>        {<BR>            get<BR>            {<BR>                return m_pNodeColor;<BR>            }<BR>            set<BR>            {<BR>                m_pNodeColor = value;<BR>            }<BR>        }<BR><BR>        public System.Drawing.Rectangle NodeRectangle<BR>        {<BR>            get<BR>            {<BR>                return m_RectNode;<BR>            }<BR>            set<BR>            {<BR>                m_RectNode = value;<BR>            }<BR>        }<BR><BR>        public string TipText<BR>        {<BR>            get<BR>            {<BR>                return m_sTipText;<BR>            }<BR>            set<BR>            {<BR>                m_sTipText = value;<BR>            }<BR>        }<BR><BR>        public bool Selected<BR>        {<BR>            get<BR>            {<BR>                return m_bSelected;<BR>            }<BR>            set<BR>            {<BR>                m_bSelected = value;<BR>            }<BR>        }<BR><BR>        public string Text<BR>        {<BR>            get<BR>            {<BR>                return m_sText;<BR>            }<BR>            set<BR>            {<BR>                m_sText = value;<BR>            }<BR>        }<BR><BR>    }<BR>}</I></I></DIV>
喜欢0 评分0
SimpleGIS(简化你的GIS开发工作) ==================== QQ:389240138 http://www.SimpleGIS.com.cn MSN:simplegis@sohu.com Blog:simplegis.blog.sohu.com
license
路人甲
路人甲
  • 注册日期2003-08-20
  • 发帖数235
  • QQ33281522
  • 铜币366枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2007-04-05 02:43
ding
Gis的小石块 QICQ:33281522 EMAIL:license@vip.sina.com GIS的麦田守望者,希望和大家交流。 〓〓〓〓〓〓〓〓〓 〓 GISEMPIRE 〓 〓 灌水★波菜 〓 〓 专 用 章 〓 〓〓〓〓〓〓〓〓〓
举报 回复(0) 喜欢(0)     评分
wxc11235
路人甲
路人甲
  • 注册日期2007-04-07
  • 发帖数2
  • QQ
  • 铜币140枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2007-04-27 19:38
<P>好啊,大哥</P>
<P>我正在做基于ArcGIS的地图符号化</P>
<P>就是用AE开发</P>
<P>希望有些这方面的资料</P>
<P>希望大哥能提供</P>
<P>我的邮箱<a href="mailtwxc11235@163.com" target="_blank" >wxc11235@163.com</A></P>
举报 回复(0) 喜欢(0)     评分
linghe
路人甲
路人甲
  • 注册日期2004-06-04
  • 发帖数20
  • QQ
  • 铜币102枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2007-04-28 21:48
<P>支持啊  我也需要  给点帮助啊</P>

<P><a href="mailtgis_linghe@163.com" target="_blank" >gis_linghe@163.com</A>  谢谢</P>
举报 回复(0) 喜欢(0)     评分
zhu89
路人甲
路人甲
  • 注册日期2006-08-31
  • 发帖数44
  • QQ
  • 铜币236枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2007-04-29 13:44
<TABLE fixed; WORD-BREAK: break-all" height="85%" width="95%" align=center border=0>

<TR>
<TD 9pt; LINE-HEIGHT: 12pt" vAlign=top width=* height="100%">
<P>支持啊  我也需要 <a href="mailtzhu89cq@yahoo.com" target="_blank" ><FONT color=#000000><a href="mailtzhu89cq@yahoo.com.cn" target="_blank" >zhu89cq@yahoo.com</FONT></A>.cn</A>  谢谢</P></TD></TR></TABLE>
举报 回复(0) 喜欢(0)     评分
mawzh
路人甲
路人甲
  • 注册日期2004-11-21
  • 发帖数102
  • QQ
  • 铜币421枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2007-04-29 15:48
<P>给个源代码吧大哥!  <a href="mailtmawzh@tom.com" target="_blank" >mawzh@tom.com</A></P>
举报 回复(0) 喜欢(0)     评分
snoopyxp
路人甲
路人甲
  • 注册日期2004-08-11
  • 发帖数31
  • QQ
  • 铜币225枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2007-09-06 11:11
<P>我也要</P>
<P><a href="mailtchenming801220@sina.com" target="_blank" >chenming801220@sina.com</A> </P>
<img src="images/post/smile/dvbbs/em12.gif" />
举报 回复(0) 喜欢(0)     评分
thb8177
路人甲
路人甲
  • 注册日期2008-03-22
  • 发帖数8
  • QQ
  • 铜币154枚
  • 威望0点
  • 贡献值0点
  • 银元0个
7楼#
发布于:2008-04-18 13:08
<P>我也想要,不知还有么?</P>
<P><a href="mailtthb8177@yahoo.com.cn" target="_blank" >thb8177@yahoo.com.cn</A></P>
举报 回复(0) 喜欢(0)     评分
duckweeds
路人甲
路人甲
  • 注册日期2007-08-10
  • 发帖数3
  • QQ
  • 铜币108枚
  • 威望0点
  • 贡献值0点
  • 银元0个
8楼#
发布于:2008-05-10 23:16
<FONT face=宋体 size=1>给个源码吧大哥,谢谢,secenes#gmail.com</FONT>
举报 回复(0) 喜欢(0)     评分
poptf
路人甲
路人甲
  • 注册日期2007-04-08
  • 发帖数6
  • QQ
  • 铜币135枚
  • 威望0点
  • 贡献值0点
  • 银元0个
9楼#
发布于:2009-02-11 10:15
<P>麻烦楼主给个源码,谢谢 我正在做毕业论文,需要者方资料  谢谢</P>
举报 回复(0) 喜欢(0)     评分
上一页
游客

返回顶部