ImageCreate
 
为图像赋值和初始化存储

语法

Declare Function ImageCreate Overload ( ByVal width As Integer, ByVal height As Integer, ByVal color As UInteger = transparent_color ) As Any Ptr
Declare Function ImageCreate ( ByVal width As Integer, ByVal height As Integer, ByVal color As UInteger = transparent_color, ByVal depth As Integer ) As Any Ptr

用法

result = ImageCreate( width , height [, [ color ][, depth ]] )

参数

width
所需的宽度,以像素为单位。
height
所需的高度,以像素为单位。
color
要填充图像区域的像素值。
depth
所需的颜色深度,以像素为单位。

返回值

如果无法创建图像,则返回NULL(0),否则返回图像的地址。必须在图形模式初始化后调用ImageCreate,否则返回0.

因此,在Shared变量声明的情况下,ImageCreate不能用作集成初始值,即使在Udt(在成员字段或构造函数中),因为初始化值(共享变量)设置在运行任何用户代码之前的程序。图像赋值调用必须在分离的可执行指令中,并且在图形模式初始化之后。

说明

这两个程序都尝试为指定的width height 的图像赋值内存。如果不成功,则返回NULL(0)。否则,通过填充值为color 的像素的整个区域来创建并初始化该大小的图像。如果未指定,color 假定当前图形屏幕的透明颜色值,可以通过调用ScreenControl找到。在任何情况下,返回图像的地址,然后由用户控制,并且必须使用ImageDestroy进行销毁。

第一个过程创建一个与当前图形屏幕相匹配的颜色深度的图像,可以通过调用ScreenControl找到。第二个过程以像素为单位创建颜色深度为depth 的图像。对于这两个过程,只要图像的颜色深度与图形屏幕的颜色深度一致,就可以在任何屏幕模式下进行绘制过程,并且在模式更改之间使用生成的图像。

为新图像赋值内存的推荐方法是ImageCreate.内存布局 - 大小,结构等 - 在记录的情况下,可能会从版本更改为版本,使手动计算尺寸容易出错。但是,ImageInfo可以用于检索现有图像的大小(以字节为单位),允许手动赋值图像副本的内存,或从文件中读取或写入文件,设备。

可以使用Get (图形)使用预先赋值的内存来初始化图像。

例子

''创建图形屏幕。
ScreenRes 320, 200, 32

''创建一个深绿色背景的64x64像素图像。
Dim image As Any Ptr = ImageCreate( 64, 64, RGB(0, 128, 0) )

If image = 0 Then
    Print "无法创建图像。"
    Sleep
    End -1
End If

''在图像的中心绘制一个半透明的红色圆圈。
Circle image, (32, 32), 28, RGBA(255, 0, 0, 128),,, 1.0, f

''使用各种blitting方法将图像画在屏幕上。
Put (120, 60), image, PSet
Put (140, 80), image, Alpha

''破坏形象。
ImageDestroy image

Sleep




方言差异

  • -lang qb 方言中不可用,除非使用别名__Imagecreate引用。

与QB差别

  • 新的FreeBASIC

参考