SUNSHANGXIN
驱动老牛
驱动老牛
  • 注册日期2002-11-19
  • 最后登录2009-08-01
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望19点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
阅读:2043回复:2

在线等 请教StretchBlt在位图拷贝过程中 压缩大时图像失真我该如何处理啊 内有原码

楼主#
更多 发布于:2004-07-16 09:01
CBitmap MemBitmap;//定义一个位图对象
CFileException e;//出错处理
BITMAPFILEHEADER bmfh;//BMP文件头变量

RGBTRIPLE *rgb;//24位真彩色数据格式

InitData();
if (!cf.Open(pFilename,CFile::modeRead, &e))//找到文件后,打开文件
{
MessageBox("Can not open the file!","24Open File");
return;
}
cf.SeekToBegin();
cf.Read(&bmfh,sizeof(bmfh));//读取文件头
cf.Read(&bmih,sizeof(bmih));//读取文件信息头
rgb = new RGBTRIPLE[bmih.biWidth*bmih.biHeight];
cf.SeekToBegin();
cf.Seek(bmfh.bfOffBits,CFile::begin);
if ((cf.GetLength())>64*1024)
{
cf.ReadHuge(rgb,bmih.biWidth*bmih.biHeight*3);
}
else
{
cf.Read(rgb,bmih.biWidth*bmih.biHeight);
}
CClientDC  dc(this);
HBITMAP hBitmap=::CreateDIBitmap(dc.m_hDC,
&bmih, CBM_INIT, rgb,
(LPBITMAPINFO) &bmih,DIB_RGB_COLORS);  

HDC hMemDC=::CreateCompatibleDC(dc.m_hDC);// 建立内存
HBITMAP hBitmapOld= (HBITMAP)SelectObject(hMemDC, hBitmap);  // 选择对象
// 成员CRect mDispR用于指示图形显示区域的大小.
// 成员CPoint mPos用于指示图形显示起始位置坐标.
::StretchBlt(dc.m_hDC,0,0, bmih.biWidth/2, bmih.biHeight/2,
hMemDC,0,0, bmih.biWidth, bmih.biHeight, SRCCOPY);
[b]苍白的,不是文字,是人的思想 虚伪的,不是网络,是人的灵魂 伤心的,不是爱情,是人的心灵 难忘的,不是容貌,是人的思诀 黎明的曙光早已不见了夕日的辉煌 东方的日出早就失去了往日的灿烂 而我也尽脱了昨日的笑容去迎接明天的枯涩 [/b]
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2004-07-16 13:08
如何失真???给个完整的例子,调试看看.....
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
SUNSHANGXIN
驱动老牛
驱动老牛
  • 注册日期2002-11-19
  • 最后登录2009-08-01
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望19点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-07-16 20:10
我解决了 谢谢
没有选择拷贝模式
[b]苍白的,不是文字,是人的思想 虚伪的,不是网络,是人的灵魂 伤心的,不是爱情,是人的心灵 难忘的,不是容貌,是人的思诀 黎明的曙光早已不见了夕日的辉煌 东方的日出早就失去了往日的灿烂 而我也尽脱了昨日的笑容去迎接明天的枯涩 [/b]
游客

返回顶部