查看源代码 wxBitmap (wx v2.4.3)
这个类封装了平台相关的位图的概念,可以是单色、彩色或者带有 alpha 通道支持的彩色位图。
如果您需要直接访问位图数据,而不是使用 wxMemoryDC
进行绘制,则需要使用 wxPixelData
类(wx 中未实现)(RGB 位图使用 wxNativePixelData,带有额外 alpha 通道的位图使用 wxAlphaPixelData)。
请注意,许多 wxBitmap
函数接受一个 type
参数,它是 ?wxBitmapType 枚举的值。这些值的有效性取决于您的程序运行的平台以及 wxWidgets 的配置。如果使用所有可能的 wxWidgets 设置
wxMSW 支持 BMP 和 ICO 文件、BMP 和 ICO 资源;
wxGTK 支持 gdk-pixbuf 支持的任何文件;
wxMac 支持 PICT 资源;
wxX11 支持 XPM 文件、XPM 数据、XBM 数据;
此外,wxBitmap
可以加载和保存 wxImage
可以加载和保存的所有格式;有关更多信息,请参见 wxImage
。当然,您必须加载 wxImage
处理程序(请参阅 ?wxInitAllImageHandlers() 和 wxImage::AddHandler
(wx 中未实现))。请注意,给定 wxWidgets 端口的所有可用 wxBitmapHandlers 在启动时都会自动加载,因此您无需使用 wxBitmap::AddHandler
(wx 中未实现)。
关于 wxImage
和 wxBitmap
之间差异的更多信息: wxImage
只是一个 RGB 字节缓冲区,带有一个可选的 alpha 字节缓冲区。它是通用的、平台无关的并且与图像文件格式无关的代码。它包括用于缩放、调整大小、裁剪和其他图像数据操作的通用代码。另一方面,wxBitmap
旨在成为任何本地图像格式的包装器,这种格式可以最快/最容易地绘制到 DC 或成为在 wxMemoryDC
上执行的绘图操作的目标。通过像这样在 wxImage/wxBitmap 之间划分职责,可以更容易地使用所有平台和图像类型共享的通用代码进行通用操作,以及在需要性能或兼容性的地方使用平台特定代码。
预定义对象(包括 wx.hrl):?wxNullBitmap
参见
wxWidgets 文档:wxBitmap
摘要
函数
从平台相关的位图创建图像。
从图标创建位图。
这是一个重载的成员函数,为方便起见而提供。它与上述函数的不同之处仅在于它接受的参数。
创建与给定 DC 兼容的位图,继承其放大倍数。
销毁对象
获取位图的颜色深度。
获取位图的高度(以像素为单位)。
获取相关的掩码(如果有),该掩码可能是从文件加载的或为位图设置的。
获取相关的调色板(如果有),该调色板可能是从文件加载的或为位图设置的。
只要矩形完全属于位图,则返回当前位图的子位图。
获取位图的宽度(以像素为单位)。
如果存在位图数据,则返回 true。
从文件或资源加载位图。
默认构造函数。
从给定的图像创建此位图对象。
创建一个新的位图。
从给定的数组 bits
创建位图。
将位图保存在指定的文件中。
为此位图设置掩码。
设置关联的调色板。
类型
-type wxBitmap() :: wx:wx_object().
函数
-spec convertToImage(This) -> wxImage:wxImage() when This :: wxBitmap().
从平台相关的位图创建图像。
这保留了掩码信息,以便位图和图像可以在这方面来回转换而不会丢失。
-spec copyFromIcon(This, Icon) -> boolean() when This :: wxBitmap(), Icon :: wxIcon:wxIcon().
从图标创建位图。
-spec create(This, Sz) -> boolean() when This :: wxBitmap(), Sz :: {W :: integer(), H :: integer()}.
等效于 create(This, Sz, [])
。
-spec create(This, Width, Height) -> boolean() when This :: wxBitmap(), Width :: integer(), Height :: integer(); (This, Sz, [Option]) -> boolean() when This :: wxBitmap(), Sz :: {W :: integer(), H :: integer()}, Option :: {depth, integer()}.
这是一个重载的成员函数,为方便起见而提供。它与上述函数的不同之处仅在于它接受的参数。
-spec create(This, Width, Height, [Option]) -> boolean() when This :: wxBitmap(), Width :: integer(), Height :: integer(), Option :: {depth, integer()}; (This, Width, Height, Dc) -> boolean() when This :: wxBitmap(), Width :: integer(), Height :: integer(), Dc :: wxDC:wxDC().
创建与给定 DC 兼容的位图,继承其放大倍数。
返回:如果创建成功,则返回 true。
自:3.1.0
-spec destroy(This :: wxBitmap()) -> ok.
销毁对象
获取位图的颜色深度。
值 1 表示单色位图。
获取位图的高度(以像素为单位)。
参见:getWidth/1
-spec getMask(This) -> wxMask:wxMask() when This :: wxBitmap().
获取相关的掩码(如果有),该掩码可能是从文件加载的或为位图设置的。
参见
-spec getPalette(This) -> wxPalette:wxPalette() when This :: wxBitmap().
获取相关的调色板(如果有),该调色板可能是从文件加载的或为位图设置的。
参见:wxPalette
-spec getSubBitmap(This, Rect) -> wxBitmap() when This :: wxBitmap(), Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}.
只要矩形完全属于位图,则返回当前位图的子位图。
此函数保留位深度和掩码信息。
获取位图的宽度(以像素为单位)。
参见:getHeight/1
如果存在位图数据,则返回 true。
-spec loadFile(This, Name) -> boolean() when This :: wxBitmap(), Name :: unicode:chardata().
-spec loadFile(This, Name, [Option]) -> boolean() when This :: wxBitmap(), Name :: unicode:chardata(), Option :: {type, wx:wx_enum()}.
从文件或资源加载位图。
返回:如果操作成功,则返回 true;否则返回 false。
备注:如果存在调色板(特别是对于彩色 Windows 位图),并且代码支持,则可以将其与位图关联。您可以使用 getPalette/1
成员来检查是否已创建调色板。
参见:saveFile/4
-spec new() -> wxBitmap().
默认构造函数。
构造一个没有数据的位图对象;必须随后调用赋值或其他成员函数,例如 create/4
或 loadFile/3
。
-spec new(Name) -> wxBitmap() when Name :: unicode:chardata(); (Sz) -> wxBitmap() when Sz :: {W :: integer(), H :: integer()}; (Img) -> wxBitmap() when Img :: wxImage:wxImage() | wxBitmap:wxBitmap().
-spec new(Width, Height) -> wxBitmap() when Width :: integer(), Height :: integer(); (Name, [Option]) -> wxBitmap() when Name :: unicode:chardata(), Option :: {type, wx:wx_enum()}; (Sz, [Option]) -> wxBitmap() when Sz :: {W :: integer(), H :: integer()}, Option :: {depth, integer()}; (Img, [Option]) -> wxBitmap() when Img :: wxImage:wxImage(), Option :: {depth, integer()}.
从给定的图像创建此位图对象。
必须这样做才能实际显示图像,因为您无法直接在窗口上绘制图像。
生成的位图将使用提供的颜色深度(如果深度为 ?wxBITMAP_SCREEN_DEPTH,则使用当前系统的深度),这意味着可能会进行颜色缩减。
在 Windows 上,如果存在调色板(使用 SetPalette 设置),则在创建 wxBitmap
时将使用该调色板(在 8 位显示模式下最有用)。在其他平台上,当前会忽略调色板。
-spec new(Bits, Width, Height) -> wxBitmap() when Bits :: binary(), Width :: integer(), Height :: integer(); (Width, Height, [Option]) -> wxBitmap() when Width :: integer(), Height :: integer(), Option :: {depth, integer()}.
创建一个新的位图。
深度 ?wxBITMAP_SCREEN_DEPTH 表示当前屏幕或视觉效果的深度。
某些平台仅支持单色的 1 和当前颜色设置的 ?wxBITMAP_SCREEN_DEPTH。
在 MSW、Mac 和 GTK+ 下支持包括 alpha 通道的 32 位深度。
-spec new(Bits, Width, Height, [Option]) -> wxBitmap() when Bits :: binary(), Width :: integer(), Height :: integer(), Option :: {depth, integer()}.
从给定的数组 bits
创建位图。
您应该仅在可移植程序中使用此函数来创建单色位图(深度为 1):在这种情况下,bits 参数应包含 XBM 图像。
对于其他位深度,行为取决于平台:在 Windows 下,数据将没有任何更改地传递到基础的 CreateBitmap() API。在其他平台下,只能使用此构造函数创建单色位图,并且应该使用 wxImage
从静态数据创建彩色位图。
等效于:isOk/1
-spec saveFile(This, Name, Type) -> boolean() when This :: wxBitmap(), Name :: unicode:chardata(), Type :: wx:wx_enum().
-spec saveFile(This, Name, Type, [Option]) -> boolean() when This :: wxBitmap(), Name :: unicode:chardata(), Type :: wx:wx_enum(), Option :: {palette, wxPalette:wxPalette()}.
将位图保存在指定的文件中。
返回:如果操作成功,则返回 true;否则返回 false。
备注:根据 wxWidgets 的配置方式,并非所有格式都可用。
参见:loadFile/3
已弃用
此函数自 3.1.2 版本起已弃用,尺寸和深度只能在构造时设置。
设置深度成员(不影响位图数据)。
已弃用
此函数自 3.1.2 版本起已弃用,尺寸和深度只能在构造时设置。
设置高度成员(不影响位图数据)。
-spec setMask(This, Mask) -> ok when This :: wxBitmap(), Mask :: wxMask:wxMask().
为此位图设置掩码。
备注:一旦调用此函数,位图对象就拥有该掩码。
注意:也可以为具有 alpha 通道的位图设置掩码,但不建议在 wxMSW 下执行此操作,因为绘制此类位图的性能不是很好。
参见
-spec setPalette(This, Palette) -> ok when This :: wxBitmap(), Palette :: wxPalette:wxPalette().
设置关联的调色板。
(在 GTK+ 下未实现)。
参见:wxPalette
已弃用
此函数自 3.1.2 版本起已弃用,尺寸和深度只能在构造时设置。
设置宽度成员(不影响位图数据)。