网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
在VC5中显示256色位图
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
al.CreateHalftonePalette( &dc );
else
{
  // 颜色数 <= 256 RGBQUAD *prgb="new" RGBQUAD[ncolors]; CDC memdc; memdc.CreateCompatibleDC(&dc); memdc.SelectObject( &bitmap ); ::GetDIBColorTable( memdc, 0, ncolors, prgb ); UINT nsize="sizeof(LOGPALETTE)" + (sizeof(PALETTEENTRY) * ncolors); LOGPALETTE *plp="(LOGPALETTE" *) new byte[nsize]; plp->palVersion = 0x300;
  plp- >palNumEntries = ncolors;

  for( int i=0; ipalPalEntry[i].peRed = prgb[i].rgbRed;
   plp- >palPalEntry[i].peGreen = prgb[i].rgbGreen;
   plp- >palPalEntry[i].peBlue = prgb[i].rgbBlue;
   plp- >palPalEntry[i].peFlags = 0;
  }

  pal.CreatePalette( plp );

  delete plp;
  delete prgb;
}

return TRUE;
}


  2.显示位图
  在WM_PAINT消息的响应函数OnPaint()中实现。
void OnPaint()
{
CPaintDC dc(this); // device context for painting

// create a memory dc compatible with the paint dc
CDC memdc;
memdc.CreateCompatibleDC( &dc );

CBitmap bitmap;
CPalette palette;
long nWidth;
long nHeight;

  //调用该函数
GetBitmapandPalette("e:\\project\\
  showimage\\bitmap1.bmp",bitmap,palette ,
  &nWidth,&nHeight);
memdc.SelectObject( &bitmap );

// select and realize the palette
if( dc.GetDeviceCaps(RASTERCAPS) &
  RC_PALETTE && palette.m_hObject != NULL )
{
  dc.SelectPalette( &palette, FALSE );
  dc.RealizePalette();
}

//显示位图
dc.BitBlt(0, 0, nWidth,nHeight, &memdc, 0, 0,SRCCOPY);

}

---- 以上程序只是简单的从一个固定路径(e:\\project\\showimage\\bitmap1.bmp)装入位图,读者可以将其功能扩充,如通过对话框选取等等,在此不多赘述。

---- 最后还要补充的一点是,如果要显示的位图是作为位图资源与程序联系在一起的,对以上程序稍作修改即可显示出来,修改方法如下:

首先将GetBitmapandPalette()函数改为:
BOOL  GetBitmapandPalette(UINT nidresource,
CBitmap &bitmap, CPalette &pal,long *w,long *h)
其中nidresource是该位图的ID。

然后将GetBitmapandPalette()中的第一句改为:
LPCTSTR lpszresourcename = (LPCTSTR)nidresource;
并将LoadImage函数改为:
HBITMAP hbmp = (HBITMAP)::LoadImage( AfxGetInstanceHandle(),
               nidresourcename,IMAGE_BITMAP,0,0,
                         LR_CREATEDIBSECTION);

最后,在OnPaint函数中调用GetBitmapandPalette()时,
将位图的ID
通过nidresource传入即可

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号