您的位置:首页 > 其它

Direct2D 11 8bit 灰度图,求大佬~~!

2020-04-05 12:14 330 查看

`Direct2D 11 8bit 灰度图,求大佬~~!`


现在我有一个8bit的bmp灰度图的buffer,要求使用D2D bitmap搞出来
自己尝试后发现只有WIC的Format才支持8bit灰度,D2D的位图创建里面没有
已经有一种解决办法是修改buffer,使原8bit单通道变成RGBA 32bit 4通道,
就能用DXGI_FORMAT_R8G8B8A8_UNORM这个枚举成功创建位图实例
但是同样的值多存了3份,这个就有点过分了。。所以我想知道还有没有其他方法

拜托各位大佬了,给你们下跪了
:ஐ٩(๑´ᵕ`)۶ஐ:

LONG width = 0, height = 0;
WORD bitCount = 0;
RGBQUAD* quad = NULL;
//这里是模拟外面传进来的buffer
unsigned char* buffer = readBmp("F://F5Z//D3D_test//D3D_x64//Picture//test3.bmp", &width, &height, &bitCount, quad);
//转32位RGBA位图数据
ChangeTo32bitGrayBitMap(buffer, width, height);
ComPtr<ID2D1Bitmap> tmp = NULL;

//指定RGB格式
D2D1_PIXEL_FORMAT pixelFormat = D2D1::PixelFormat(
DXGI_FORMAT_B8G8R8A8_UNORM,
D2D1_ALPHA_MODE_IGNORE
);
//设置属性
D2D1_BITMAP_PROPERTIES property;
property.pixelFormat = pixelFormat;
property.dpiX = 0;
property.dpiY = 0;

D2D1_SIZE_U size;
size.width = width;
size.height = height;

bitCount = 32;
m_d2drender->CreateBitmap(
size,
buffer,
bitCount / 8 * width,
property,
&tmp
);

delete[] buffer;

代码比较乱,只是表示个意思哈,将就一下~

  • 点赞
  • 收藏
  • 分享
  • 文章举报
Kris ๑ 发布了3 篇原创文章 · 获赞 0 · 访问量 54 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: