设为首页
加入收藏
发布文章
  首页   操作系统   系统集成   程序设计   网站设计   图形图象   安全技术   反击技术   硬件DIY   认证考试   免费资源
当前位置:中国E盟 -=> 程序设计 -=> VC++ -=> 正文  
常用的图象处理函数的整理 << 木马是如何编写的 | Visual C#中用WMI获取远程计算机信息 >> 
 发布日期:2006-5-4 14:37:31 发布者:[中国E盟]  来源:[本站]  浏览:[]  评论:[ 字体:   
       在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);
};

]]>
打印 】【 收藏 】【 推荐 】 
相关文章 推荐文章 热门文章
·暂无  ·暂无
木马是如何编写的
VC-摄像头控制SDK源码
常用的图象处理函数的整理
深入浅出VC++串口编程之第三方类
创建高权限进程
 评一评
正在读取…
  笔名:
  评论:
   
【注】 发表评论必需遵守以下条例:
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款

设置首页 - 加入收藏 - 关于我们 - 联系我们 - 友情连接 - -

Copyright ©2006-2008 中国E盟 Powered By:www.chinaE.org

湘ICP备05004075号