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 在控件上方绘制文本的主要内容,如果未能解决你的问题,请参考以下文章

VB.NET关于绘制五角星

VB.NET 在图片框中绘制与设备无关的位图

winform绘制自定义控件

在 WPF 中相对于其容器绘制对角文本/文本块/标签/控件

PDF 在图像上方/文本下方突出显示

将在图表控件上绘制的点写入文本文件,但每个坐标仅一次?