| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 931 人关注过本帖
标题:位图为何变小了?
取消只看楼主 加入收藏
BlueDreame
Rank: 1
等 级:新手上路
帖 子:545
专家分:2
注 册:2004-12-16
结帖率:66.67%
收藏
 问题点数:0 回复次数:5 
位图为何变小了?

我用画图画了512×512@24bit的位图,可利用如下API时:

HBITMAP hBmp = (HBITMAP) ::LoadImage(...);
BITMAP bm;
::GetObject(...);

// hDC, hDCBmp are valid

::SelectObject(hDCBmp, hBmp);

::BitBlt(...);

//...

关键是bm.bmWidth == bm.bmHeight == 64了。即使在BitBlt中使用512也没用。谁知道是怎么回事。谢谢。

搜索更多相关主题的帖子: 位图 变小 
2006-10-13 07:34
BlueDreame
Rank: 1
等 级:新手上路
帖 子:545
专家分:2
注 册:2004-12-16
收藏
得分:0 

可是那样位图就失真了。


2006-10-13 09:09
BlueDreame
Rank: 1
等 级:新手上路
帖 子:545
专家分:2
注 册:2004-12-16
收藏
得分:0 

代码:

if(! hBmp)
{
return FALSE;
}

m_lpDDSBack->Restore();
::DeleteObject( m_hBmp );
m_hBmp = hBmp;

HDC hDC;
HDC hDCBmp = ::CreateCompatibleDC( NULL );
::SelectObject(hDCBmp, m_hBmp);

BITMAP bm;
::GetObject(m_hBmp, sizeof( bm ), &bm);
m_rcSrc.left = m_rcSrc.top = 0;
m_rcSrc.right = bm.bmWidth;
m_rcSrc.bottom = bm.bmHeight;

m_lpDDSBack->GetDC( &hDC );
::BitBlt(hDC, 0, 0, bm.bmWidth, bm.bmHeight, hDCBmp, 0, 0, SRCCOPY);
m_lpDDSBack->ReleaseDC( hDC );

::DeleteDC( hDCBmp );

hBmp 就是用LoadImage得到的。


2006-10-13 09:47
BlueDreame
Rank: 1
等 级:新手上路
帖 子:545
专家分:2
注 册:2004-12-16
收藏
得分:0 

C++ Builder 6写的,包里有.exe

DRkVBo9C.rar (442.22 KB) 位图为何变小了?



2006-10-13 09:56
BlueDreame
Rank: 1
等 级:新手上路
帖 子:545
专家分:2
注 册:2004-12-16
收藏
得分:0 

对DirectDraw的封装和对位图的操作用的是标准C++和Win32 API。与开发环境无关。

里面有.exe


2006-10-13 14:19
BlueDreame
Rank: 1
等 级:新手上路
帖 子:545
专家分:2
注 册:2004-12-16
收藏
得分:0 

问题已经解决,原来出在LR_DEFAULTSIZE上,我不知道它原来代表64.

谢谢两位。


2006-10-13 14:37
快速回复:位图为何变小了?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026030 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved