一直不明白PictureBox,Image,Graphics,DC它们到底指的是什么?
DC与内存DC又是什么?
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim bp As New Bitmap(PictureBox1.Width, PictureBox1.Height)
Dim gr As Graphics = Graphics.FromImage(bp)
gr.DrawString("Hello World", Me.Font, Brushes.Red, 20, 33)
bp.Save("D:\1.bmp")
gr.Dispose()
bp.Dispose()
End Sub
曾经看了一个通俗的比喻,什么画布,画笔,笔刷等。
那么上面的例子又如何形象比喻?
猜测如下:
DC 画布(刷新消失)
内存DC 画布(刷新不消失)这个与上面DC都是在内存中,为啥叫内存DC
bmp 画出的作品
pen/brush 作图工具
graphic 作图方式方法(技巧)
image 这个又比喻成什么呢?(picturebox1.image)
为了使上面画的同时显示在picturebox上,增加了一行代码:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim bp As New Bitmap(PictureBox1.Width, PictureBox1.Height)
Dim gr As Graphics = Graphics.FromImage(bp)
gr.DrawString("Hello World", Me.Font, Brushes.Red, 20, 33)
PictureBox1.Image = bp '增加此句
bp.Save("D:\1.bmp")
gr.Dispose()
bp.Dispose()
End Sub
结果出错了,原因是什么?
如果想深入理解这些概念,请推荐一本通俗书籍,谢谢!
------解决方案--------------------
PictureBox,实际上是一个Windows窗体
Image图像的基类,用来描述抽象的图像这个概念
Graphics是DC在.NET上的封装,好比PictureBox是Window在.NET上的封装一样。
DC(设备上下文)或者Graphics代表一个画布,你可以通过窗体、内存图片、打印机等各种支持绘图的对象获取其各自的DC。