TransparentBlt位图透明

shuijingzi00 2010-03-26 07:36:32
使用TransparentBlt函数,位图倒立显示,不只什么原因?
...全文
242 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuijingzi00 2010-03-29
  • 打赏
  • 举报
回复
TransparentBlt函数是不是不支持目标高度为负呀?
shuijingzi00 2010-03-26
  • 打赏
  • 举报
回复
在程序中找到这些语句:
pDC->SetMapMode(MM_LOMETRIC);
SetScrollSizes(MM_LOMETRIC, pDoc->m_viewsize,pDoc->m_sizePage,pDoc->m_sizeLine);
dcMetaFile.SetMapMode(MM_LOMETRIC);
pView->SetScrollSizes(MM_LOMETRIC, m_viewsize,m_sizePage,m_sizeLine);
如果现在都改成MM_TEXT,那整个软件程序会不会影响很大呀?
Eleven 2010-03-26
  • 打赏
  • 举报
回复
Debug下看看你的坐标对不对呢?
mike_zw 2010-03-26
  • 打赏
  • 举报
回复
pDC->BitBlt(x, y, 50, 50, &ImageDC, 0, 0, SRCCOPY);
x, y是不是在(50, 50)的右下方了?
快乐鹦鹉 2010-03-26
  • 打赏
  • 举报
回复
看一下pDC的源头在哪里,也就是这个DrawImage函数在哪里调用的。一直找到pDC的最终来源。看一下那里是否调整了映射模式,已经不是MM_TEXT了吧,其它映射模式都会把坐标系的Y轴倒立。
zhouzhixiangcn 2010-03-26
  • 打赏
  • 举报
回复
pDC->BitBlt(x, y, 50, 50, &ImageDC, 0, 0, SRCCOPY);
x, y是多少,检查一下
shuijingzi00 2010-03-26
  • 打赏
  • 举报
回复
void CColumn::DrawImage(CDC* pDC)
{

CDoc* pDoc;
CMainFrame* pMainFrame;
pMainFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;
pDoc=(CDoc*)pMainFrame->GetActiveDocument();

CMDIFrameWnd *pFrame = (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;
CMDIChildWnd *pChild = (CMDIChildWnd *) pFrame->GetActiveFrame();
CView *pView = (CView *) pChild->GetActiveView();

CBitmap FootballBMP;
FootballBMP.LoadBitmap(IDB_BITMAP1);
CDC ImageDC;
ImageDC.CreateCompatibleDC(pDC);
CBitmap *pOldImageBMP = ImageDC.SelectObject(&FootballBMP);
pDC->BitBlt(x, y, 50, 50, &ImageDC, 0, 0, SRCCOPY);
ImageDC.SelectObject(pOldImageBMP);

}

这是我测试写的简单函数,整个软件的代码非常多,网上有人说如倒立把BitBlt函数中的目标高度变为负值,我变了,可不显示了,是不是与我这个软件中的逻辑坐标轴设置有关系呀?
快乐鹦鹉 2010-03-26
  • 打赏
  • 举报
回复
那就见鬼了。你就这几行代码吗?能贴完整一点么。把整个函数贴出来。
shuijingzi00 2010-03-26
  • 打赏
  • 举报
回复
图片是正的!
shuijingzi00 2010-03-26
  • 打赏
  • 举报
回复
没有呀,刚学VC,这只是个练习的例子,那pDC应该设置成什么模式呀?
aa3000 2010-03-26
  • 打赏
  • 举报
回复
是图片本来就倒立是吧
快乐鹦鹉 2010-03-26
  • 打赏
  • 举报
回复
那是不是你修改了pDC的模式了啊???
shuijingzi00 2010-03-26
  • 打赏
  • 举报
回复
用BitBlt是倒立的
刚刚凉 2010-03-26
  • 打赏
  • 举报
回复
参数问题吧 好好检查输入 参数对不对
快乐鹦鹉 2010-03-26
  • 打赏
  • 举报
回复
你用BitBlt呢,看看是否是倒立的。
shuijingzi00 2010-03-26
  • 打赏
  • 举报
回复
CBitmap FootballBMP;
FootballBMP.LoadBitmap(IDB_BITMAP1);
CDC ImageDC;
ImageDC.CreateCompatibleDC(pDC);
CBitmap *pOldImageBMP = ImageDC.SelectObject(&FootballBMP);
TransparentBlt(pDC->m_hDC, x, y, 50, 50, ImageDC.m_hDC, 0, 0, 50, 50, RGB(255,255,255));
ImageDC.SelectObject(pOldImageBMP);
快乐鹦鹉 2010-03-26
  • 打赏
  • 举报
回复
不知你怎么写的
shuijingzi00 2010-03-26
  • 打赏
  • 举报
回复
TransparentBlt我也试过了,不显示!
快乐鹦鹉 2010-03-26
  • 打赏
  • 举报
回复
BitBlt本来就没让你设置为负数。你不是用TransparentBlt么
shuijingzi00 2010-03-26
  • 打赏
  • 举报
回复
为什么BitBlt中目标高度为负不显示?
加载更多回复(5)

19,469

社区成员

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

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