打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
GDI+实现24位位图转32位

今天利用修改图像的alpha通道实现了图像的倒影,但是在对图像进行测试的时候,发现24位的位图不能实现倒影,究其原因是24位以下的图像没有alpha通道,也就没办法利用修改alpha通道的方式去实现图像的倒影。于是就想办法实现24位图像转成32位图像。也就能具有alpha通道了。此时利用了GDI+的一些特性。现将程序共享。

BOOL GetBitmapData(Bitmap *pBitmap, PixelFormat pixelFormat, BitmapData *data)  
{  
 Bitmap *bmp = pBitmap;  
 Gdiplus::Rect r(0, 0, bmp->GetWidth(), bmp->GetHeight());  
 UINT pixelSize = GetPixelFormatSize(pixelFormat);  
 data->Stride = ((pixelSize * r.Width + 31) & 0xffffffe0) >> 3;  
 data->Scan0 = (void*)new char[r.Height * data->Stride];  
 bmp->LockBits(&r, ImageLockModeRead | ImageLockModeUserInputBuf,  
  pixelFormat, data);  
 bmp->UnlockBits(data);  
 //delete bmp;  
 return TRUE;  
}  
//参数pBitmap为传人的24位的位图。

void CHange24To32(Bitmap *pBitmap)
{
 BitmapData data;  
 if (!GetBitmapData(pBitmap, PixelFormat32bppARGB, &data))  
  return;  
 if(pBitmap)
  delete pBitmap;
 // 建立一个24位像素格式的自定义数据位图对象  
 Bitmap *bmp = new Bitmap(data.Width, data.Height, data.Stride,  
  data.PixelFormat, (BYTE*)data.Scan0);  
pBitmap=bmp;//重新给传人的位图赋值。
}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
使用GDI+将24位真彩色图像转换为8位灰度图像,VC技术文章,VC
GDI+无闪烁绘图
C#.NET图像处理
GDI位图和DIB位图
如何加速GDI+处理图片速度?
一个菜鸟的图像处理入门
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服