#include "fbgfx.bi"
#if __FB_LANG__ = "fb"
Using FB
#endif
Const As Integer w = 64, h = 64
Dim As IMAGE Ptr img8, img32
Dim As Integer x, y
''创建一个32位图像,大小w * h:
ScreenRes 1, 1, 32, , GFX_NULL
img32 = ImageCreate(w, h)
If img32 = 0 Then Print "ImageImreate在img32上??失败!": Sleep: End
''创建一个8位图像,大小w * h:
ScreenRes 1, 1, 8, , GFX_NULL
img8 = ImageCreate(w, h)
If img8 = 0 Then Print "ImageGreate在img8上失败!": Sleep: End
''用图案填充8位图像
For y = 0 To h - 1
For x = 0 To w - 1
PSet img8, (x, y), 56 + (x + y) Mod 24
Next x
Next y
''在8位模式下打开图形窗口,并将图像输入:
ScreenRes 320, 200, 8
WindowTitle "8位彩色模式"
Put (10, 10), img8
Sleep
''将图像数据复制到32位图像中
Dim As Byte Ptr p8, p32
Dim As Integer pitch8, pitch32
#ifndef ImageInfo '' older versions of FB don't have the ImageInfo feature
#define GETPITCH(img_) IIf(img_->Type=PUT_HEADER_NEW,img_->pitch,img_->old.width*img_->old.bpp)
#define GETP(img_) CPtr(Byte Ptr,img_)+IIf(img_->Type=PUT_HEADER_NEW,SizeOf(PUT_HEADER),SizeOf(_OLD_HEADER))
pitch8 = GETPITCH(img8): p8 = GETP(img8)
pitch32 = GETPITCH(img32): p32 = GETP(img32)
#else
ImageInfo( img8, , , , pitch8, p8 )
ImageInfo( img32, , , , pitch32, p32 )
#endif
For y = 0 To h - 1
ImageConvertRow(@p8 [ y * pitch8 ], 8, _
@p32[ y * pitch32], 32, _
w)
Next y
''在32位模式下打开图形窗口并将图像输入:
ScreenRes 320, 200, 32
WindowTitle "32位彩色模式"
Put (10, 10), img32
Sleep
''从内存中释放图像:
ImageDestroy img8
ImageDestroy img32