チェッカー模様(市松模様)の描き方 への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 魔界の仮面弁士  (社会人) 投稿日時 2019/1/25 10:21:03
BackgroundImageLayout を Stretch にした PictureBox に Metafile を指定することで、
PictureBox のサイズに合わせて、自動リサイズされるようにしてみました。

Imports System.Drawing.Imaging
Imports System.IO
Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim wmf As Metafile
        Using bmp As New Bitmap(1, 1), gw = Graphics.FromImage(bmp)
            Dim hdc = gw.GetHdc()
            wmf = New Metafile(New MemoryStream(), hdc, New Rectangle(0, 0, 50, 50), MetafileFrameUnit.Pixel, EmfType.EmfPlusDual)
            gw.ReleaseHdc(hdc)
        End Using
        Using g = Graphics.FromImage(wmf)
            g.Clear(Color.White)
            For i = 0 To 24
                If i Mod 2 = 0 Then
                    Dim x = i Mod 5
                    Dim y = i \ 5
                    Dim r As New Rectangle(x, y, 10, 10)
                    g.FillRectangle(Brushes.Red, (i Mod 5) * 10, (i \ 5) * 10, 10, 10)
                End If
            Next
            g.Flush()
        End Using

        PictureBox1.BackgroundImageLayout = ImageLayout.Stretch
        PictureBox1.BackgroundImage = wmf
    End Sub
End Class
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2019/1/24 14:09:04
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim rect As New Rectangle(0, 0, PictureBox1.Width, PictureBox1.Height)
    Dim bmp As New Bitmap(rect.Width, rect.Height)
    Dim w = rect.Width / 5F
    Dim h = rect.Height / 5F
    Using g = Graphics.FromImage(bmp)
        g.Clear(Color.White)
        For x = 0 To 4
            For y = 0 To 4
                If CBool((x + y) And 1) Then
                    g.FillRectangle(Brushes.Red, x * w, y * h, w, h)
                End If
            Next
        Next
    End Using
    PictureBox1.Image = bmp
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Dim rect As New Rectangle(0, 0, PictureBox1.Width, PictureBox1.Height)
    Dim bmp As New Bitmap(rect.Width, rect.Height)
    Dim hs = HatchStyle.LargeCheckerBoard
    'Dim hs = HatchStyle.SmallCheckerBoard 
    Using g = Graphics.FromImage(bmp), hb As New HatchBrush(hs, Color.White, Color.Red)
        g.FillRectangle(hb, rect)
    End Using
    PictureBox1.Image = bmp
End Sub

投稿者 YuO  (社会人) 投稿日時 2019/1/24 13:52:06
仕組みがわからない,というのは「何についての」仕組みがわからないのでしょうか。
・市松模様は関係なく,そもそもPictureBoxに描画する方法がわからない
・市松模様に(ハードコーディングでも)描く方法がわからない
・市松模様をループで描くための赤と白の判定方法がわからない
・その他
等あると思いますが。
投稿者 りんりん  (学生) 投稿日時 2019/1/24 10:41:32
shu様返信ありがとうございます。
ピクチャーボックスに描画する形を取りたいと考えております。
投稿者 shu  (社会人) 投稿日時 2019/1/24 07:42:41
実装方法1)ラベルとかパネルとかを5X5で配置する
実装方法2)パネルやピクチャーボックスに描画する


まずはどういうデザインで行いたいのかを確定された方がよいと思います。
投稿者 りんりん  (学生) 投稿日時 2019/1/24 02:53:36
5×5で赤と白のチェッカー模様を描画ボタンで描画するプログラムを作りたいのですが、方法がわかりません。そもそも仕組みが分かっていない状態です。助けてください。よろしくお願い致します。