网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
常用的图象处理函数的整理
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式

邓振波

  在Visual C++中,对图象操作的功能所能提供的函数是比较弱的,我在实践中收集掌握了一些图象出来的方法与技巧,总结出一个COperateBitmap类,可以实现方便的对图象的读取、保存、剪贴板操作、DIB和DDB的转换,下面列出头文件,工程文件我把它写成了一个MFC扩展DLL。可以点击 这里 下载
  1、方便从磁盘装载各种图形格式(JPG、BMP、Gif等)文件,并得到图象大小和相应位图的句柄,从而可以方便的操作各种图像格式, 无需了解各种图象的格式,以及相应的压缩解压算法,得到的位图句柄, 可以方便的在VC中进行各种操作。
  2、把位图画到DC上,方便的把位图画到设备DC上,无需复杂的SelectObject等
  3、通过位图建立区域,可以生成各种形状的窗口
  4、方便的两个位图复制操作,支持部分区域拷贝
  5、不用StretchBlt函数,直接改变位图的大小,StretchBlt只改变显示的大小,实际的数据并没有发生变化,本类中的ScaleBitmap可以直接改变实际数据的大小,这将获得一些有用的功能
  6、DDB与DIB的转换
  7、保存位图到文件,保存为JPEG文件

  这个类没有作过多的优化与功能扩充,如果要写专业的图象操作程序,本类可能不适用。

class COperateBitmap
{
public:
BOOL CopyWindowToClipboard(CWnd* pWnd);
//剪贴板操作
BOOL CopyDIBToClipboard(const CWnd* pWnd,HANDLE hDib,CPalette* pPal);
BOOL CopyBitmapToClipboard(const CWnd* pWnd,CBitmap& bitmap,CPalette* pPal);
//建立调色版,根据DIB
BOOL CreateDIBPalette(HANDLE hDIB, CPalette* pPal);
//DDB和DIB的转换
HANDLE DDBToDIB(HBITMAP hBmp, DWORD dwCompression, CPalette *pPal);
HBITMAP DIBToDDB( HANDLE hDIB );
HANDLE DDBToDIB( CBitmap& bitmap, DWORD dwCompression, CPalette* pPal );
int SaveBmp(HANDLE hDib,LPSTR filename);
//从文件装载各种图形格式(JPG、BMP、Gif等),并得到大小和位图的句柄
void LoadPictureFromFile(HDC hdc, LPCTSTR szFile, CBitmap* pBitmap, CSize& mSize);
//把位图画到DC上
void DrawBitmap(CDC* dc, HBITMAP hbmp, RECT r, BOOL Stretch);
//建立区域
BOOL CreateRegion (RECT r, CRgn *pRgn, CBitmap *pBitmap, COLORREF keycol);
//两个位图对拷
void CopyBitmap(CDC* dc, CBitmap& mRes, const CBitmap& hbmp, RECT r);
//由位图到区域
HRGN BitmapToRegion (HBITMAP hBmp, COLORREF cTransparentColor = 0, COLORREF cTolerance = 0x101010);
COperateBitmap();
//缩放图象主函数,由Ivaylo Byalko编写
HBITMAP ScaleBitmap(HBITMAP hBmp, WORD wNewWidth, WORD wNewHeight);
//保存DIB为JPEG文件
BOOL JpegFromDib(HANDLE hDib, //Handle to DIB
int nQuality, //JPEG quality (0-100)
CString strJpegFileName, //Pathname to target jpeg file
CString* strMsg); //Error msg to return
virtual ~COperateBitmap();
protected:
//下面三个缩放图象辅助函数,由Ivaylo Byalko编写
BITMAPINFO *PrepareRGBBitmapInfo(WORD wWidth, WORD wHeight);
void ShrinkData(BYTE *pInBuff, WORD wWidth, WORD wHeight,
BYTE *pOutBuff, WORD wNewWidth, WORD wNewHeight);
void EnlargeData(BYTE *pInBuff, WORD wWidth, WORD wHeight,
BYTE *pOutBuff, WORD wNewWidth, WORD wNewHeight);
WORD DIBNumColors(LPSTR lpbi);
WORD PaletteSize(LPSTR lpbi);
float *CreateCoeff(int nLen, int nNewLen, BOOL bShrink);
//操作JPEG文件
BOOL BuildSamps(HANDLE hDib,
int nSampsPerRow,
struct jpeg_compress_struct cinfo,
JSAMPARRAY jsmpArray,
CString* pcsMsg);
RGBQUAD QuadFromWord(WORD b16);
BOOL DibToSamps(HANDLE hDib,
int nSampsPerRow,
struct jpeg_compress_struct cinfo,
JSAMPARRAY jsmpPixels,
CString* pcsMsg);
};

网学推荐

免费论文

原创论文

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