问题
在一个项目中,我需要添加一个圆形控件,并在中间显示一些文本。
我的问题是圆圈太小,当我调整它的大小时,它会与其他控件重叠。我希望圆圈的宽度与正方形相同。
或者,如何使控件的背景透明?
解决方案
这是一个从 Control 派生的自定义控件,可以设置为半透明。
界面是一个带颜色的圆圈,可以包含几个数字。
该控件公开了以下自定义属性:
Opacity(不透明度): 控件背景的不透明度级别 [0, 255]
InnerPadding(内部填充): 定义圆圈边界的内部矩形与控件边界之间的距离。
FontPadding(字体填充): 文本与内部矩形之间的距离。
通过重写 CreateParams,然后设置 ExStyle |= WS_EX_TRANSPARENT; 来实现透明度。
Control.SetStyle() 方法用于修改控件行为,添加以下 ControlStyles:
▶ ControlStyles.Opaque: 防止绘制控件的背景,因此它不受系统管理。与 CreateParams 结合使用,将控件的扩展样式设置为 WS_EX_TRANSPARENT,控件将变得完全透明。
▶ ControlStyles.SupportsTransparentBackColor: 控件接受其背景颜色的 Alpha 值。如果不也设置 ControlStyles.UserPaint,它将不会用于模拟透明度。我们将通过其他方法自己来做。
要查看其工作原理,请创建一个新的类文件,用此代码替换其中的所有代码,保留命名空间并构建项目/解决方案。
新的自定义控件将出现在工具箱中。将其拖放到窗体上。根据需要修改其自定义属性。
控件的可视化表示:
注意和免责声明
以上是如何创建一个半透明的圆形控件,其文本不与其他控件重叠?的详细内容。更多信息请关注PHP中文网其他相关文章!