<4D F736F F D E67696E652B ECFE0B9D8C8FDCEACB9A6C4DCC4A3BFE9BDE9C9DC5FB6FE5F2E646F63>

Similar documents
<4D F736F F D E67696E652B ECFE0B9D8C8FDCEACB9A6C4DCC4A3BFE9BDE9C9DC5FC8FD5F2E646F63>

ASP.NET实现下拉框二级联动组件

Microsoft Office SharePoint Server MOSS Web SharePoint Web SharePoint 22 Web SharePoint Web Web SharePoint Web Web f Lists.asmx Web Web CAML f

untitled

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

untitled

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

CHAPTER VC#

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

untitled

新・解きながら学ぶJava

威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

untitled

Microsoft Word - 01.DOC

( 总 第 1073 期 ) 浙 江 省 人 民 政 府 主 办 2015 年 3 月 17 日 出 版 省 政 府 令 省 政 府 文 件 目 录 浙 江 省 大 型 群 众 性 活 动 安 全 管 理 办 法 ( 浙 江 省 人 民 政 府 令 第 333 号 ) (3) 浙 江 省 人 民 政

Microsoft Word - ch04三校.doc

untitled

1.5招募说明书(草案)

基于ECO的UML模型驱动的数据库应用开发1.doc

untitled

《大话设计模式》第一章

untitled

untitled

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

第 一 节 认 识 自 我 的 意 义 一 个 人 只 有 认 识 自 我, 才 能 够 正 确 地 认 识 到 自 己 的 优 劣 势, 找 出 自 己 的 职 业 亮 点, 为 自 己 的 顺 利 求 职 推 波 助 澜 ; 一 个 人 只 有 认 识 自 我, 才 能 在 求 职 中 保 持

2015 年 度 收 入 支 出 决 算 总 表 单 位 名 称 : 北 京 市 朝 阳 区 卫 生 局 单 位 : 万 元 收 入 支 出 项 目 决 算 数 项 目 ( 按 功 能 分 类 ) 决 算 数 一 财 政 拨 款 一 一 般 公 共 服 务 支 出 二

目 录 第 一 部 分 档 案 局 概 况 一 主 要 职 责 二 部 门 决 算 单 位 构 成 第 二 部 分 档 案 局 2016 年 度 部 门 预 算 表 一 2016 年 度 市 级 部 门 收 支 预 算 总 表 二 2016 年 度 市 级 部 门 支 出 预 算 表 三 2016

<ADB6ADB1C25EA8FAA6DB2D4D56432E706466>

Microsoft Word - 第3章.doc

untitled

无类继承.key

第3章.doc

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

概述

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

第一章 章标题-F2 上空24,下空24

// HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport public HTuple

Microsoft Word - 新1-12.doc

Microsoft PowerPoint - ch6 [相容模式]

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

新版 明解C++入門編

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

02

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

<4D F736F F D E4345C6BDCCA84323B1E0B3CCD2AAB5E3D6AED2BB2E646F63>

javaexample-02.pdf

Chapter 9: Objects and Classes

Microsoft Word - 实验3.doc

untitled

EJB-Programming-3.PDF

Guava学习之Resources

C/C++程序设计 - 字符串与格式化输入/输出

PowerPoint Presentation

untitled

CHAPTER 1

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

EJB-Programming-4-cn.doc

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

untitled

untitled

Microsoft Word - Learn Objective-C.doc


ExcelUtility 类库使用说明 ( 续 ) 开发 / 设计 : 左文俊 第一个新增功能, 列宽自适应, 当超过 30 个字符则将单元格内容设为换行 任意一个无模板的导出方法均支持该功能, 示例代码如下 : /// <summary> /// 测试方法

Strings

untitled

Microsoft PowerPoint - string_kruse [兼容模式]

(6) 要 求 付 款 管 理 员 从 预 订 表 中 查 询 距 预 订 的 会 议 时 间 两 周 内 的 预 定, 根 据 客 户 记 录 给 满 足 条 件 的 客 户 发 送 支 付 余 款 要 求 (7) 支 付 余 款 管 理 员 收 到 客 户 余 款 支 付 的 通 知 后, 检

台北市立大安高工職業學校

Strings

建模与图形思考

第七讲 继承与多态

提问袁小兵:

,, 1 ( ) 1 / CurrentSeries Int ConnectionString CString Style3D BOOL IsContinue Graph BOOL LegendType Int SeriesName CString SeriesColor OL E

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 access_token=access_token (http


OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

概述

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

untitled

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

Java

Visual Basic D 3D

MapGIS 10.2 二维插件式二次开发 手册 武汉中地数码科技有限公司 中国 武汉 2017 年 3 月

mvc

绘制OpenCascade中的曲线

c_cpp

Chapter 9: Objects and Classes

ebook50-11

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

1.5招募说明书(草案)

Hadoop&Spark解决二次排序问题(Hadoop篇)

软件工程文档编制

Transcription:

ArcEngine+C# TIN 相关三维功能模块介绍 ( 二 ) 下拉框 (ComboBox) 颜色控件 作者 : 刘志远 Email:592418843@qq.com

这一篇介绍如何写一个单色和渐变色的颜色选择下拉框 (ComboBox) 控件 有些功能中, 需要用户自定义选颜色时, 一般只需调用 ColorDialog 颜色选择控件就可以了, 但如果为了更贴近 ArcGIS 的操作风格, 且需要使用渐变颜色时,ColorDialog 可能就不能满足需求了 熟悉 ArcGIS 操作的朋友可能记得, 在图层 要素等的颜色设置时用到颜色下拉框选择颜色, 其中就有选渐变颜色的下拉框, 如下图 在某些二次开发项目中可能会遇到类似的颜色选择需求, 希望这里的介绍对需要的朋友能起到一点帮助作用 TIN 模型按高程选择渐变颜色 1. 单色颜色下拉框 其思路就是往 ComboBox 中添加记录颜色值的项 (Item), 再根据该颜色值重绘 ComboBox 对应项的矩形区域, 达到直接显示的效果 具体步骤如下 : 先在项目下添加一个新的 UserControl 控件, 再拖一个 ComboBox 控件到 UserControl 上, 将 ComboBox 的 Dock 属性设为 Fill, 再调整 UserControl 的大小, 使其与刚好完全位于 ComboBox 下, 最后关键的一步就是加入代码 下面贴上代码, 具体的解释见代码注释, 效

果如下图 : 单一色效果 using System.Windows.Forms; using System.Drawing; using System; namespace WindowsFormsApplication1 /// 单一颜色选择控件类 public partial class PureColorComboBox : UserControl private Color _SelectedColor; /// 已选择颜色, 封装字段 public Color SelectedColor get return _SelectedColor; set _SelectedColor = value; /// Combobox 颜色选择发生变化时激发的事件 public event EventHandler SelectColorChanged; // 自定义的初始颜色值, 有必要时可以指定一些特定的颜色 //private static string[] colorlist =

// // "AliceBlue","AntiqueWhite","Aqua","Aquamarine","Azure","Beige", // "Bisque","Black","BlanchedAlmond","Blue","BlueViolet","Brown", // "BurlyWood","CadetBlue","Chartreuse","Chocolate","Coral", // "CornflowerBlue","Cornsilk","Crimson","Cyan","DarkBlue","DarkCyan", // "DarkGoldenrod","DarkGray","DarkGreen","DarkKhaki","DarkMagenta", // "DarkOliveGreen","DarkOrange","DarkOrchid" //; /// 构造函数 public PureColorComboBox() InitializeComponent(); AddComponent(); /// 加载各颜色项 (Items) private void AddComponent() this.combobox1.drawmode = DrawMode.OwnerDrawFixed; this.combobox1.dropdownstyle = ComboBoxStyle.DropDownList; // 设定 ComboBox 的高度 this.combobox1.itemheight = 18; this.combobox1.beginupdate(); this.combobox1.items.clear(); // 如要使用自定义颜色初始值时则使用这段代码 //foreach (string onecolor in colorlist) // // this.combobox1.items.add(onecolor); // // 加载系统所有的颜色, 如果使用自定义颜色初始值时则注销下面的代码 Array colors = System.Enum.GetValues(typeof(KnownColor)); for (int i = colors.getlength(0) - 1; i >= 0; i--) this.combobox1.items.add(colors.getvalue(i).tostring());

this.combobox1.endupdate(); // 在 ComboBox 的 DrawItem 事件 ( 绘制事件 ) 中绘制颜色矩形框, 每次添加 Item 时都会触发该事件 // 该函数由在 ComboBox 的属性标签的事件栏下双击 DrawItem 自动生成 // 当然, 也可以自己在前面添加 //this.combobox1.drawitem += new System.Windows.Forms.DrawItemEventHandler(this.comboBox1_DrawItem); private void combobox1_drawitem(object sender, DrawItemEventArgs e) if (e.index < 0) return; Rectangle rect = e.bounds; // 获取 Item 矩形框 // 获取对应项记录的颜色值 string colorname = combobox1.items[e.index].tostring(); // 新建单一色刷子, 颜色为对应项记录的值 SolidBrush brush = new SolidBrush(Color.FromName(colorName)); _SelectedColor = brush.color; // 为美观, 可缩小选定项区域 1 个像素 rect.inflate(-1, -1); // 填充颜色 e.graphics.fillrectangle(brush, rect); // 用黑色绘制颜色边框 e.graphics.drawrectangle(pens.black, rect); /// 在 ComboBox 选择项改变触发事件中激活颜色传递事件 /// <param name="sender"></param> /// <param name="e"></param> private void combobox1_selectedindexchanged(object sender, EventArgs e) // 如果使用该控件的窗体注册了 SelectColorChanged 事件, 则激活 // 相当于用 SelectColorChanged 事件替换了 ConboBox 的 SelectedIndexChanged 事件 if (SelectColorChanged!= null) SelectColorChanged(this, e);

最后, 将该颜色控件像使用其他控件一样拖入需要的窗体中, 在该控件的 SelectColorChanged 事件下, 通过控件的 SelectedColor 属性获得选择的颜色值 : // 下拉框所选颜色值发生改变时触发的事件 private void colorcombobox1_selectcolorchanged(object sender, EventArgs e) // 通过 ComboBox 的 SelectedColor 公共字段获取当前选中的值 MessageBox.Show(" 当前选中的颜色为 : "+this.colorcombobox1.selectedcolor.tostring()); 2. 渐变色的颜色下拉框 渐变的颜色下拉框的与单色下拉框的思路是一样的, 只是着色方案和初始颜色设定稍微不同, 这里只把的代码贴出来, 注释较略, 其他则可参照上传的具体实例, 效果如下 : 渐变色的颜色下拉框 using System.Windows.Forms; using System.Drawing; using System; using System.Drawing.Drawing2D; namespace WindowsFormsApplication1 public partial class GradientColorComboBox : UserControl private Color _FromColor; private Color _ToColor; public Color FromColor get return _FromColor;

set _FromColor = value; public Color ToColor get return _ToColor; set _ToColor = value; public event EventHandler SelectColorChanged; // 预定义的渐变色 private static string[] colorlist = "AliceBlue AntiqueWhite","Aqua Aquamarine","Azure Beige", "Bisque Black","BlanchedAlmond Blue","BlueViolet Brown", "BurlyWood CadetBlue","Chartreuse Chocolate", "CornflowerBlue Cornsilk","Crimson Cyan","DarkBlue DarkCyan", "DarkGoldenrod DarkGray","DarkGreen DarkKhaki", "DarkMagenta DarkOliveGreen","DarkOrange DarkOrchid" ; public GradientColorComboBox() InitializeComponent(); PersonalizeComponent(); private void PersonalizeComponent() this.combobox1.drawmode = DrawMode.OwnerDrawFixed; this.combobox1.dropdownstyle = ComboBoxStyle.DropDownList; this.combobox1.itemheight = 18; this.combobox1.beginupdate(); this.combobox1.items.clear(); foreach (string onecolor in colorlist) this.combobox1.items.add(onecolor); this.combobox1.endupdate(); private void combobox1_drawitem(object sender, DrawItemEventArgs e)

if (e.index < 0) return; Rectangle rect = e.bounds; // 读取起始 终止颜色值 string fcolorname = combobox1.items[e.index].tostring().split(' ')[0]; string tcolorname = combobox1.items[e.index].tostring().split(' ')[1]; _FromColor = Color.FromName(fColorName); _ToColor = Color.FromName(tColorName); // 选择线性渐变刷子 LinearGradientBrush brush = new LinearGradientBrush(rect, _FromColor, _ToColor, 0, false); rect.inflate(-1, -1); // 填充颜色 e.graphics.fillrectangle(brush, rect); // 绘制边框 e.graphics.drawrectangle(pens.black, rect); private void combobox1_selectedindexchanged(object sender, EventArgs e) if (SelectColorChanged!= null) SelectColorChanged(this, e); 同样, 将该渐变色控件拖入需要使用窗体中, 在该控件的 SelectColorChanged 事件下, 通过控件的 FromColor 和 ToColor 属性获得选择的渐变色值 : private void gradientcolorcombobox1_selectcolorchanged(object sender, EventArgs e) MessageBox.Show(" 当前选中的颜色为 : " + this.gradientcolorcombobox1.fromcolor.tostring() + this.gradientcolorcombobox1.tocolor.tostring()); 3. 下一篇简介 下一篇打算介绍如何写一个带复选框及颜色图标的 TreeView 控件, 该控件与 TIN 模型

分级设色方案中的各层颜色相关联, 通过该 TreeView 控件复选框的勾选状态决定 TIN 模型 对应颜色层的显示与隐藏, 同时, 结合本篇的颜色控件, 双击 TreeView 中的颜色图标, 实 时改变 TIN 模型中对应分级的颜色