【问题标题】:vb.net LED BOARD DISPLAY user controlvb.net LED BOARD DISPLAY 用户控制
【发布时间】:2011-12-23 07:25:28
【问题描述】:

我正在 vb.net 中开发 LEDBOARD 用户控件。我也做过。实际上加载时间太长了。在 vb6 相同的应用程序中,我正在使用标签控件加载 3000 个标签数组但不耗时。在 vb.net 我也在做同样的事情,但加载 3000 个标签需要太多时间。还有其他方法(任何控件或任何自定义控件)来绘制输入文字(任意字体),如下图所示 如下图

【问题讨论】:

  • already asked this question。如果您想包含其他详细信息,则应编辑该问题以包含它们,而不是询问新问题。
  • @CodyGray 是的,先生,同样的问题,但我想通过使用图像来探索它,以便我可以更好地了解使用不同的想法显示相同的输出
  • 如果您真正阅读人们所说的话会有所帮助:“如果您想包含更多详细信息,您应该编辑该问题以包含它们,而不是询问新问题。”

标签: vb.net image vb6-migration led system.drawing.imaging


【解决方案1】:

通过继承 Control 从头开始​​创建您的 LedBoard 控件,而不是使用 UserControl 并添加大量标签。

我只是做了一个小测试来告诉你我的意思。您必须调整逻辑以满足您的需求。

Public Class LedBoard
    Inherits Control

    Private _rand As Random = New Random()

    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
        e.Graphics.FillRectangle(Brushes.Black, 0, 0, Width, Height)

        Const nx As Integer = 40, ny As Integer = 25

        Dim w = CInt((Width - 1) / nx) - 1
        Dim h = CInt((Height - 1) / ny) - 1
        For x As Integer = 0 To nx - 1
            For y As Integer = 0 To ny - 1
                If _rand.NextDouble() < 0.8 Then
                    e.Graphics.FillRectangle(Brushes.Red, x * (w + 1) + 1, y * (h + 1) + 1, w, h)
                End If
            Next
        Next

    End Sub

End Class

【讨论】:

  • 注意:当前解决方案的所有继承自Control的类都会自动出现在工具箱的顶部,您可以将它们拖到表单中。
  • 谢谢 Olivier Jacot-Descombes 和 cody gray。实际上我也和你一样找到了解决方案,输出和上面很像,但只有我没有得到像块一样分开的线条。在上面的图片中是 5 条垂直线和 1 条水平线
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多