# bitmapDemo **Repository Path**: oszksw/bitmap-demo ## Basic Information - **Project Name**: bitmapDemo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-20 - **Last Updated**: 2025-08-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 自定义bitmap显示 ```cpp //头文件 #include "utils/BitmapHelper.h" //ARGB格式 enum COLOR32 { RED = 0xFFFF0000, // ARGB 格式,A=255, R=255, G=0, B=0 GREEN = 0xFF00FF00, // ARGB 格式,A=255, R=0, G=255, B=0 BLUE = 0xFF0000FF, // ARGB 格式,A=255, R=0, G=0, B=255 HALF_ALPHA = 0x80FFFFFF, // ARGB 半透明白色 FULL_ALPHA = 0x00000000 // ARGB 全透明 }; //向bitmap中填充指定的颜色 void fillBitmapColor(_bitmap_t* bmp, uint32_t color) { if (!bmp || !bmp->data) return; int pixelCount = bmp->width * bmp->height; uint32_t* p = (uint32_t*)bmp->data; for (int i = 0; i < pixelCount; ++i) { p[i] = color; } } //初始化指定的宽高bitmap bool initBitmap(ZKBase* view, struct _bitmap_t*& bmp, int w, int h) { int pitch = w * 4; int size = pitch * h; //bmp信息头 int bmi[] = {size + 54, 0, 54, 40, w, h, 1 | (32 << 16), 0, size, 0, 0, 0, 0}; //创建一个临时的bmp文件并加载到bitmap中 static unsigned int tag = 0; std::string tmpPath = base::format("/tmp/tmp%d.bmp", tag++).c_str(); LOGI_TRACE("bmp = [%s]", tmpPath.c_str()); FILE *fp = fopen(tmpPath.c_str(), "wb"); if(!fp) { return false; } fprintf(fp, "BM"); fwrite(&bmi, sizeof(bmi), 1, fp); fclose(fp); _bitmap_t* tmp_bitmap = nullptr; //内存由系统管理,无需手动管理 BitmapHelper::loadBitmapFromFile(tmp_bitmap, tmpPath.c_str()); memset(tmp_bitmap->data, 0, tmp_bitmap->pitch * tmp_bitmap->height); view->setBackgroundBmp(tmp_bitmap); bmp = tmp_bitmap; remove(tmpPath.c_str()); return (bmp != nullptr) ? true : false; } ```` # svg显示 为了支持多样化的绘图需求,推荐使用 SVG 进行界面开发。我们已集成了 [SVG 渲染库](https://package.flythings.cn/packages/Z21/lunasvg/2.4.1),可将 SVG 文件转换为 bitmap 进行存储和显示,相关代码中有详细的使用示例,方便快速集成和开发。 **注:目前无法支持字体显示**