タイトル : 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 |