tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^5: PictureBoxの反転描画
投稿日: 2007/01/21(Sun) 13:22
投稿者Kazu
> g.DrawString、g.DrawLineあるいはg.FillRectangleを使用して
> 反転色で描画しなおせば実現できると思うのですが、できれば
> 一発で反転できる「FillReversibleRectangle」を使用したいと考えています。

「FillReversibleRectangle」は、画面上に描画するため、意図した処理が
できず、あきらめました。
g.DrawString、g.DrawLineあるいはg.FillRectangleを使用して反転色を描画
することで対応するようにしました。自分なりにサンプルを作成しましたので
参照ください。「花ちゃん」さんの適切なアドバイスに感謝いたします。

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim c As Color
        Dim g As Graphics
        Dim d As SolidBrush
        Dim f As New Font("MS Pゴシック", 14)

        '矩形、文字、ラインを描画

        With PictureBox1
            .Image = New Bitmap(100, 50)
            g = Graphics.FromImage(.Image)
        End With

        c = Color.Green
        d = New SolidBrush(c)
        g.FillRectangle(d, 0, 0, 100, 50)
        g.DrawString("花ちゃん", f, Brushes.Blue, 10, 10)
        g.DrawLine(Pens.Black, 0, 40, 100, 40)

        f.Dispose()
        g.Dispose()

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim g As Graphics
        Dim c As Color
        Dim d As SolidBrush
        Dim f As New Font("MS Pゴシック", 14)

        'Button1で描画した内容を反転

        With PictureBox1
            .Image = New Bitmap(100, 50)
            g = Graphics.FromImage(.Image)
        End With

        c = Color.Green     '元の色
        c = Color.FromArgb(c.ToArgb() Xor &HFFFFFF) '色の反転
        d = New SolidBrush(c)
        g.FillRectangle(d, 0, 0, 100, 50)

        c = Color.Blue      '元の色
        c = Color.FromArgb(c.ToArgb() Xor &HFFFFFF) '色の反転
        d = New SolidBrush(c)
        g.DrawString("花ちゃん", f, d, 10, 10)

        c = Color.Black     '元の色
        c = Color.FromArgb(c.ToArgb() Xor &HFFFFFF) '色の反転
        g.DrawLine(New Pen(c, 1), 0, 40, 100, 40)

        f.Dispose()
        g.Dispose()

    End Sub

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。