玄武岩上 Pebble-SDK 中位图的结构是什么
What is the structure of a bitmap in Pebble-SDK on basalt
使用 graphics_capture_frame_buffer 返回一个 GBitmap。如果我想直接使用它,它的格式是什么。我将如何修改单个像素?
我在 SDK 给出的 isometric 示例中找到了这个。所以它看起来是一个 uint8_t 每个像素一行一次将 ARGB 保持在 2 位。
#define GColorFromRGB ((GColor8){ \ .a = 3, \ .r = (uint8_t)(red) >> 6, \ .g = (uint8_t)(green) >> 6, \ .b = (uint8_t)(blue) >> 6, \ })
static void set_pixel(GPoint pixel, GColor color) {
if(pixel.x >= 0 && pixel.x < 144 && pixel.y >= 0 && pixel.y < 168) {
memset(&s_fb_data[(pixel.y * s_fb_size.w) + pixel.x], (uint8_t)color.argb, 1);
}
}
在 Pebble 3.0 中,您可以使用 gbitmap_*
访问器:
gbitmap_get_data()
获取数据的字节数
gbitmap_get_format()
确认位图的格式(在 Basalt 上应该是每像素 8 位)
gbitmap_get_bytes_per_row()
获取每一行的字节数
当格式为GBitmapFormat8Bit
时,每个像素在ARGB中是一个字节(每个分量2位)。
使用 graphics_capture_frame_buffer 返回一个 GBitmap。如果我想直接使用它,它的格式是什么。我将如何修改单个像素?
我在 SDK 给出的 isometric 示例中找到了这个。所以它看起来是一个 uint8_t 每个像素一行一次将 ARGB 保持在 2 位。
#define GColorFromRGB ((GColor8){ \ .a = 3, \ .r = (uint8_t)(red) >> 6, \ .g = (uint8_t)(green) >> 6, \ .b = (uint8_t)(blue) >> 6, \ })
static void set_pixel(GPoint pixel, GColor color) {
if(pixel.x >= 0 && pixel.x < 144 && pixel.y >= 0 && pixel.y < 168) {
memset(&s_fb_data[(pixel.y * s_fb_size.w) + pixel.x], (uint8_t)color.argb, 1);
}
}
在 Pebble 3.0 中,您可以使用 gbitmap_*
访问器:
gbitmap_get_data()
获取数据的字节数gbitmap_get_format()
确认位图的格式(在 Basalt 上应该是每像素 8 位)gbitmap_get_bytes_per_row()
获取每一行的字节数
当格式为GBitmapFormat8Bit
时,每个像素在ARGB中是一个字节(每个分量2位)。