如何保持自定义绘制的复选框控件的透明度
Posted
技术标签:
【中文标题】如何保持自定义绘制的复选框控件的透明度【英文标题】:How to keep transparency on a custom painted Checkbox control 【发布时间】:2021-10-06 17:33:30 【问题描述】:我无法创建所有者绘制的检查框,因为我不喜欢检查样式。子类化 Winform 复选框并不是什么大不了的事,而且对复选框本身进行重绘也很容易。但我不喜欢文本的位置,因为没有用于定位它的属性。
所以基本上,清除控件的图形,绘制复选框和文本我喜欢的方式和位置。
只是,不清除图形会导致黑色矩形,并且您会失去透明度。但如果不清除或重绘客户区,原始文本将始终与所有者绘制的文本重叠。
有什么解决办法吗?
【问题讨论】:
【参考方案1】:我现在找到的解决方案是将控件的文本设置为string.empty
,调用基本的 OnPaint 方法并覆盖 OnTextChange 事件。而已。现在我可以完全按照我想要的方式绘制文本,并且控制仍然是透明的:
class mycheckBox
private string _Text;
protected override void OnTextChanged(EventArgs e)
// Prevent calling paint method on text change
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
_Text = this.Text;
this.Text = string.empty;
base.OnPaint(e);
Text = _Text;
// do your drawing here
【讨论】:
以上是关于如何保持自定义绘制的复选框控件的透明度的主要内容,如果未能解决你的问题,请参考以下文章