投稿者 魔界の仮面弁士  (社会人) 投稿日時 2019/3/6 10:11:11
> 表示しようとして1分以上かかったのちプログラムが停止してしまいました。

既存の仕組みだと遅すぎるなら、いっそのこと自前で描いてしまってはどうでしょうか。


> (できれば1秒程度で作成したいと思います)

手元の環境で、ランダムな 20万の座標に
縦横 3 ピクセルなサイズの点を打ってみたところ
FillEllipse メソッドの場合で 350 ミリ秒程度、
FillRectangle メソッドなら 200 ミリ秒程度で描き終えました。


Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim r As New Random()
    Dim sz = PictureBox1.Size

    Dim sw = Stopwatch.StartNew()
    Dim bmp As New Bitmap(sz.Width, sz.Height)
    Using g = Graphics.FromImage(bmp), b As New SolidBrush(Color.FromArgb(96, Color.Red))
        g.Clear(Color.White)
        For i = 0 To 200000
            g.FillEllipse(b, r.Next(PictureBox1.Width), r.Next(PictureBox1.Height), 3, 3)
        Next
    End Using
    sw.Stop()

    Dim oldImg = PictureBox1.Image
    PictureBox1.Image = bmp
    If oldImg IsNot Nothing Then oldImg.Dispose()

    MsgBox(sw.Elapsed.ToString())
End Sub