VB.NET 在控件上方绘制文本
Posted
技术标签:
【中文标题】VB.NET 在控件上方绘制文本【英文标题】:VB.NET Drawing Text Above Controls 【发布时间】:2013-04-21 22:05:57 【问题描述】:这是我遇到的一个非常简单的问题,但在我的一生中,我似乎无法让它发挥作用。我看了一圈,但还没有找到任何类似的解决方案来正常工作。
基本上,我在一个简单的表单上有两个面板,A 和 B,B 嵌套在 A 中。
*注意,面板 A 有一个背景图片,两个面板颜色都设置为透明*t
我想在 Panel B 内部绘制一个字符串,它需要是可见的,所以它在 Panel A 上方绘制。
我尝试过覆盖面板 B 的 Paint 方法,但这不起作用。使用下面的代码时,当面板 B 没有嵌套在面板 A 内(例如面板 A 旁边)时,文本会绘制到屏幕上
Private Sub panelB_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles panelB.Paint
e.Graphics.DrawString("My Text", New Font("Arial", 60, FontStyle.Regular), Brushes.Orange, New Point(0, 0))
panelB.Refresh()
End Sub
【问题讨论】:
【参考方案1】:在panel
上绘图没有任何问题,但是您不能在绘图事件中调用Refresh
- 这就像一个无限循环,不会绘制任何内容。 Refresh 触发绘制事件。
【讨论】:
这只会停止闪烁,这很有用。但是,这并不影响我的主要问题。 好的,我不明白这里的问题。我可以在透明面板上绘制文本。如果多个面板重叠,则在 Winforms 中实现不具有真正的透明度。 我真的不知道如何解释它。我有两个面板,面板 B 位于面板 A 的顶部,面板 B 的绘制方法中的文本不可见 就像我上面说的,这不是真正的透明度。移至 WPF 以获得这种控制。以上是关于VB.NET 在控件上方绘制文本的主要内容,如果未能解决你的问题,请参考以下文章