完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
解决方案
需要一个结构体来存RGBA数据 typedef struct tagRGBQUAD { BYTE rgbBlue; BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved; } RGBQUAD; 下面是获取像素的方法 static void getPixel(PBITMAP src) { RGBQUAD srcdib[src->bmWidth * src->bmHeight]; int x, y, point = 0; Uint8 *srcrow; Uint32 pixel; /* 循环获取像素点 */ for (y = 0; y < src->bmHeight; y++) { for (x = 0; x < src->bmWidth; x++) { /* 得到像素点的地址 */ srcrow = (Uint8 *) src->bmBits + y * src->bmPitch + x * src->bmBytesPerPixel; pixel = *((Uint32 *) (srcrow)); /* 这是MiniGUI中根据Pixel转成RGBA的函数 */ Pixel2RGBA(HDC_SCREEN, pixel, &srcdib[point].rgbRed, &srcdib[point].rgbGreen, &srcdib[point].rgbBlue, &srcdib[point].rgbReserved); /* 打印看看对不对 */ printf("%d %d %d %dn", srcdib[point].rgbReserved, srcdib[point].rgbRed, srcdib[point].rgbGreen, srcdib[point].rgbBlue); /* 记录点的位置 */ point++; } } } 下面是设置像素的方法 static void setPixel(PBITMAP src, PBITMAP dstbmp) { /* 这里根据源图片重新构造一个PBITMAP对象 */ dstbmp->bmType = src->bmType; dstbmp->bmBitsPerPixel = src->bmBitsPerPixel; dstbmp->bmBytesPerPixel = src->bmBytesPerPixel; dstbmp->bmAlpha = src->bmAlpha; dstbmp->bmColorKey = src->bmColorKey; #ifdef _FOR_MONOBITMAP dstbmp->bmColorRep = src->bmColorRep; #endif dstbmp->bmAlphaMask = src->bmAlphaMask; dstbmp->bmAlphaPitch = src->bmAlphaPitch; dstbmp->bmWidth = src->bmWidth; dstbmp->bmHeight = src->bmHeight; dstbmp->bmPitch = src->bmPitch; dstbmp->bmBits = malloc(src->bmWidth * src->bmHeight * src->bmBytesPerPixel); /* dstdib存的是自己需要的每个像素点的值,根据需要自己赋值 */ RGBQUAD dstdib[src->bmWidth * src->bmHeight]; int x, y, point = 0; Uint32 pixel; /* 设置每一个像素点的值 */ for (y = 0; y < src->bmHeight; y++) { for (x = 0; x < src->bmWidth; x++) { pixel = RGBA2Pixel(HDC_SCREEN, dstdib[point].rgbRed, dstdib[point].rgbGreen, dstdib[point].rgbBlue, dstdib[point].rgbReserved); /* 打印看看像素是否正常 */ printf("%d %d %d %dn", dstdib[point].rgbReserved, dstdib[point].rgbRed, dstdib[point].rgbGreen, dstdib[point].rgbBlue); printf("pixel=%xn", pixel); /* MiniGUI根据pixel设置像素点的函数 */ SetPixelInBitmap(dstbmp, x, y, pixel); /* 记录点的位置 */ point++; } } } |
|
|
|
只有小组成员才能发言,加入小组>>
全志T113双核异构处理器的使用基于Tina Linux5.0——RTOS编译开发说明
512 浏览 0 评论
1120 浏览 1 评论
2951 浏览 0 评论
为了学习内核开发,大佬手搓了一个轻量级操作系统YiYiYa OS
2896 浏览 0 评论
1288 浏览 0 评论
【开源硬件大赛】基于全志V853设计的全功能BTB学习开发板
3450浏览 8评论
3106浏览 5评论
1877浏览 4评论
全志V85x硬件设计大赛作品精选第二期,快来Pick你心目中的最佳方案
88924浏览 3评论
3612浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 23:00 , Processed in 0.480967 second(s), Total 47, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号