这段程序为什么没有反映呢

goodbabys 2005-11-21 04:24:20
void CTransparentBltTestDlg::OnBnClickedButton3()
{
BITMAP bm;
mybmp.GetBitmap(&bm);
BITMAPINFO binfo;
ZeroMemory(&binfo,sizeof(BITMAPINFO));
binfo.bmiHeader.biBitCount=24; //file://24bit像素格式
binfo.bmiHeader.biCompression=0;
binfo.bmiHeader.biHeight=-bm.bmHeight;
binfo.bmiHeader.biPlanes=1;
binfo.bmiHeader.biSizeImage=0;
binfo.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
binfo.bmiHeader.biWidth=bm.bmWidth;


int nWidth = bm.bmWidth;
int nHeight = bm.bmHeight;
CClientDC dc(this);
BYTE *pbuf;//用来存储像素数据
int linebytes=(bm.bmWidth*3+3)&(~3);//4字节对齐
int size=linebytes*bm.bmHeight;
pbuf=new BYTE[size];
//MsgBox()

HBITMAP hOldImageBMP, hImageBMP = CreateCompatibleBitmap(dc.m_hDC,nWidth, nHeight); // 创建兼容位图
HDC hImageDC = CreateCompatibleDC(dc.m_hDC);
hOldImageBMP = (HBITMAP)SelectObject(hImageDC, hImageBMP);



CDC ImageDC;
ImageDC.CreateCompatibleDC(&dc);

COLORREF SetColor= RGB(0x00,0x00,0x00);

::GetDIBits(dc,hOldImageBMP,0,bm.bmHeight,pbuf,&binfo,SetColor);

SetColor = RGB(0xff,0x00,0x00);

::SetDIBits(dc,hOldImageBMP,0,bm.bmHeight,pbuf,&binfo,SetColor);

ImageDC.SelectObject(hOldImageBMP);
}

第一次写vc++程序,程序没有反映
请高手帮帮看看
我想实现将载入的位图中白色部门设为红色。可是程序没有反映
谢谢
...全文
84 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodbabys 2005-11-21
  • 打赏
  • 举报
回复
我也晕,谁能帮我改改这段程序呀!!!!
fairyprince 2005-11-21
  • 打赏
  • 举报
回复
我晕,这句就能改了
要一个像素像素的改,
int SetDIBits(
HDC hdc, // 兼容DC的句柄
HBITMAP hbmp, // 兼容位图的句柄
UINT uStartScan, // 扫描起始行的编号
UINT cScanLines, // 扫描的行的数目
CONST VOID *lpvBits, // 位图缓冲区的指针,要求已经分配空间
CONST BITMAPINFO *lpbmi, // 位图信息
UINT fuColorUse // 颜色格式
);
kelinwang19 2005-11-21
  • 打赏
  • 举报
回复
好像需要invalidate一下吧
goodbabys 2005-11-21
  • 打赏
  • 举报
回复
这个版块就是这样,老是没人搭理
goodbabys 2005-11-21
  • 打赏
  • 举报
回复
SetDIBits(dc,hOldImageBMP,0,bm.bmHeight,pbuf,&binfo,SetColor)不是改了吗!
fairyprince 2005-11-21
  • 打赏
  • 举报
回复
你也没转换呀,当然还是白的了

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧