タイトル | : Re^5: PictureBoxの反転描画 |
記事No | : 4867 |
投稿日 | : 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
|