# 用一堆API的做法

Posted by cww on May 03, 1999 at 16:32:50:

In Reply to: 如何存bmp档 posted by chjichin on May 03, 1999 at 12:30:55:

我用一个例子来说，如果是一个8*8的bitmap如下
01010101 -->&h55
10101010 -->&hAA
01010101 -->&h55
10101010 -->&hAA
01010101 -->&h55
10101010 -->&hAA
01010101 -->&h55
10101010 -->&hAA
那我会用CreateBitmap来产生一个hBitmap，注意是，
虽是8*8的图，但是，一个row的大小必需是16的倍数(如果
我没有错)，所以，要想像成是16*8的图，也就是第一个
row是&h5500， 第二个Row是&hAA00 以此类推
而后产生一个memoryDC，再把hBitmap与hmemDc结合起来
最后再用BitBlt将之画到PictureBox上，程式如下：
至于说如何存档(只存这8*8)又是另一个讨厌的工作，可以
查一下http://sunh.hosp.ncccku.edu.tw/~cww 中绘图
的部份。

dim bybits(1 To 16) As Byte
Dim ary
Dim i As Long,hMemDc as Long , hBitmap as Long
ary = Array(&H55, &H0, &HAA, &H0, _
&H55, &H0, &HAA, &H0, _
&H55, &H0, &HAA, &H0, _
&H55, &H0, &HAA, &H0)
For i = 1 To 16
bybits(i) = ary(i - 1)
Next i
hBitmap = CreateBitmap(8, 8, 1, 1, bybits(1))'产生单色8*8的Bitmap图
hMemDc = CreateCompatibleDC(0) '产生Memory DC
Call SelectObject(hMemDc, hBitmap)
Picture1.ForeColor = RGB(0, 0, 0)
Picture1.BackColor = RGB(255, 255, 255)
Picture1.ScaleMode = 3
BitBlt Picture1.hdc, 0, 0, 8, 8, hMemDc, 0, 0, vbSrcCopy
DeleteDC hMemDc
DeleteObject hBitmap

Follow Ups: