当前位置: 代码迷 >> VB Dotnet >> PictureBox,Image,Graphics,DC之间是什么关系?解决思路
  详细解决方案

PictureBox,Image,Graphics,DC之间是什么关系?解决思路

热度:474   发布时间:2016-04-25 02:23:42.0
PictureBox,Image,Graphics,DC之间是什么关系?
一直不明白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。
  相关解决方案