怎么解决TransparentBlt()画出的透明位图是倒的啊?给100分!!

yywhu 2003-06-17 03:21:09
CBitmap ImagBmp;
HBITMAP hBitmap = CreateDIBitmap(pDC->m_hDC,(LPBITMAPINFOHEADER)m_lpBmpInfoHeader,(LONG)CBM_INIT,(LPSTR)m_lpBmpInfoHeader+sizeof(BITMAPINFOHEADER)+m_numColors*sizeof(RGBQUAD),(LPBITMAPINFO)m_lpBmpInfoHeader,DIB_RGB_COLORS);
ImagBmp.Attach(hBitmap);

CDC ImgDC;
ImgDC.CreateCompatibleDC(pDC);
CBitmap *pOldImagBmp = ImgDC.SelectObject(&ImagBmp);

pDC->SetStretchBltMode(COLORONCOLOR);
TransparentBlt(pDC->m_hDC, hBitmap, m_DstBimapLtPt.x, m_DstBimapLtPt.y, DstBmpWidth, DstBmpHeight, ImgDC.m_hDC,0, 0, bmpWidth, bmpHeight, RGB(255,255,255));

最后画出的透明位图是倒的,因为我用的是逻辑坐标画图,以前我用StretchDIBBlt()画逻辑坐标的位图,将高改为负的,就可以画出正的位图了。可是我看了msdn说,TransparentBlt()不支持负的长和宽,怎么办啊?各位大侠帮帮忙吧。
...全文
40 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
蒋晟 2003-06-27
  • 打赏
  • 举报
回复
自顶向下的位图被认为是倒的,如果需要翻转,你可以自己一行行复制,或者调用getdibits

Command what is yours
Conquer what is not
seehill 2003-06-25
  • 打赏
  • 举报
回复
等待结局,up
systree 2003-06-23
  • 打赏
  • 举报
回复
将BITMAPINFOHEADER中的Height写成负数就可以了
aoosang 2003-06-18
  • 打赏
  • 举报
回复
up
yywhu 2003-06-17
  • 打赏
  • 举报
回复
把把m_lpBmpInfoHeader这里的位图数据颠倒恐怕不行吧。我又不是只做显示,我还有翻转等位图的操作呢!我看过TransparentBlt()的msdn它函数里的坐标是逻辑坐标啊!,但是显示的位图为什么会是倒的呢?
syl08341 2003-06-17
  • 打赏
  • 举报
回复
looked
duwenyong 2003-06-17
  • 打赏
  • 举报
回复
你把m_lpBmpInfoHeader这里的位图数据颠倒一下不就行了
wrcluomo 2003-06-17
  • 打赏
  • 举报
回复
设设映射试试。

19,468

社区成员

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

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