圆控件库CircleControl使用指南

CircleControl库是.NET 2.0环境下的一个控件库,它允许用户进行圆形运动,例如旋转一个刻度盘或者设置一个模拟时钟的指针。这个库不仅支持标记——可以程序化地定位或通过鼠标拖动的图形对象,还支持标记集——一组可以一起移动的标记。此外,背景可以填充彩色环、刻度标记和文本字符串。

当前版本为1.2.3,修复了一个bug,即CircleControl.AngleChanged()在鼠标按下或释放时并不总是触发。同时,新增了一个特性,在EditDefaults示例应用程序中显示最新的AngleChangedArgs。

CircleControl类

CircleControl类是一个.NET 2.0控件,支持圆形运动。控件支持标记和标记集,背景可以有彩色环、刻度标记和文本字符串。所有公共和受保护的类、方法和属性都使用标准的C# XML文档注释进行了完整文档化。项目包括一个HTML帮助文件。

CircleControl_123_Library下载包括:

  • CircleControl.dll - 类库
  • CircleControl.chm - 帮助文件

CircleControl_123_Demo下载包括上述文件以及:

  • AnalogClock.exe - 模拟时钟示例程序
  • ColorDialer.exe - 选择颜色的示例程序
  • EditDefaults.exe - 演示改变CircleControl属性效果的程序
  • GantryControl.exe - 详细说明的示例程序
  • ManyRings.exe - 展示大量使用环的示例程序

CircleControl库使用.NET Framework版本2.0编译。为了确认与其他框架版本的兼容性,编译的库被用于在.NET Framework版本3.0、3.5、4.0和4.5下编译的应用程序。CircleControl在所有这些版本中都能正常工作。

使用CircleControl类

要在现有表单中使用CircleControl类,可以按照以下步骤操作:

CircleControl cc = new CircleControl(); cc.Location = new System.Drawing.Point(0, 0); cc.Size = new System.Drawing.Size(200, 200); form.Controls.Add(cc);

默认情况下,新的CircleControl实例已经准备就绪,带有一个三角形标记和十个刻度标记。

添加新的标记

要添加新的标记,可以创建一个新的MarkerSet,并添加一个或多个Marker对象:

CircleControl.MarkerSet ms = new CircleControl.MarkerSet(); cc.MarkerSets.Add(ms); PointF[] poly = new PointF[4]; poly[0] = new PointF(0.25F, 0.00F); poly[1] = new PointF(0.70F, 0.18F); poly[2] = new PointF(0.64F, 0.00F); poly[3] = new PointF(0.70F, -0.18F); CircleControl.Marker m = new CircleControl.Marker( Color.Brown, // 内部颜色 Color.DarkGreen, // 边框颜色 1.0f, // 边框厚度 poly, // 定义标记形状的多边形 130.0f, // 标记的角度偏移 MouseButtons.Left, // 可以拖动标记的按钮 true // 标记是否可见 ); ms.Add(m);

多边形定义了角度为零时标记的外观。它使用笛卡尔坐标系,其中(0,0)是控件的中心,1.0是到最近边缘的距离。标记的内部区域可以是纯色、阴影图案或各种颜色渐变。边框可以是任何颜色和厚度。

AngleChanged事件

每当标记的角度变化,或者拖动标记的鼠标状态变化时,都会引发AngleChanged事件。要接收事件,请安装一个处理程序:

cc.AngleChanged += new CircleControl.AngleChangedHandler(OnAngleChange);

背景可以填充彩色环、刻度标记和文本字符串。以下代码片段添加了一个米色环和四个文本项,就像在指南针上放置的那样:

cc.Rings.Add(new CircleControl.Ring( 0.6f, // 半径大小 Color.Beige, // 内部颜色 Color.Black, // 边框颜色 2.0f // 边框厚度 )); Font f = new Font("Arial", 8.0f); cc.TextItems.Add(new CircleControl.TextItem(f, // 字体 Color.Red, // 颜色 "N", // 文本 0.8f, // 距离原点的距离 90.0f // 角度 )); cc.TextItems.Add(new CircleControl.TextItem(f, Color.Red, "S", 0.8f, 270.0f )); cc.TextItems.Add(new CircleControl.TextItem(f, Color.Red, "E", 0.8f, 0.0f )); cc.TextItems.Add(new CircleControl.TextItem(f, Color.Red, "W", 0.8f, 180.0f ));
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485