在VB.NET中让一个画面成为动态, 无非包括这样一个过程: 绘制 - 擦除- 绘制 所谓擦除有两个方法, 一是用别的图覆盖, 二是在intptr画的图(以gg.fromhwnd(****)初始化的绘制工具) 只要用refresh()的命令就能清除. 为了速度与流畅, 最好用覆盖的方法 如果只是为了程序简单,则用refresh() Double Buffer 与 BitBlt 这两个不需要用到,当时我在网上学的很模糊,也可能有错.根据模糊的记忆.. BitBlt是在屏幕上看不见的地方画上一些常用图, 然后在需要用这些图的时候直接从屏幕的一个地方抄到另一个地方,这样比直接绘制的速度要快很多. Double Buffer是把即将显示的帧画好, 然后显示的时候开始画后面的帧... 帧:Frame, 动画的一页 在VB.NET中, 似乎BitBlt已经是自动化的了, 而一个Form上通常会有Double Buffer [True/False]的属性供选择...我试了下, 看不出效果... 像素处理 像素的处理主要有三个部分:得到特定点的像素信息,分析像素信息, 写入特定点的像素信息 首先把一个图像用Bitmap加载到内存。比如: image.fromfile("c:\aaa.bmp"), 或者已经在程序里的图像, 如me.BackgroundImage, 这里我们用前者作为例子。 Dim pic As Bitmap pic = image.fromfile("c:\aaa.bmp") 然后我们得到pic的一个像素的RGB。 因为RGB是长整数, 所以我们首先建立一个long, 然后得到pic在坐标为(x,y)的点, 然后把这个点上的RGB存到这个long里面去。 Dim clr As Long clr = pic.getPixel(x,y).ToArgb 现在我们需要分析这个RGB, 把它转换成R, G, 和B , 算法如下: Dim r As integer Dim g As integer Dim b As integer b = 255 + clr \ 256 \ 256 g = 255 + (clr \ 256) Mod 256 r = 255 + clr Mod 256 如果要设定一个像素的到这个颜色信息, 我们可以这...