你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 图形图象处理与游戏编程
利用GDI函数减轻图像缩放失真(三)
 

hdc为上下文设备句柄;(XDest, YDest)为目标矩形区域的左上角坐标;nDestWidthnDestHeight分别为目标矩形区的宽度和高度;(XSrc, YSrc)为源矩形的左上角坐标;nSrcWidthnSrcHeight分别为源矩形的宽和高;lpBits为存放位图图像位值的地址;lpBitsInfoBITMAPINFO类型的结构指针;iUsage指明使用的颜色类型;dwRop代表光栅操作类型。该函数的功能是从设备无关位图(lpBits指明)中指明的矩形区域拷贝颜色数据到目标矩形区域。如果目标矩形比源矩形大,函数将对颜色数据的行和列进行拉伸,以匹配目标矩形;如果目标矩形比源矩形小,则通过使用指定的光栅操作对行列进行压缩。

4 缩放函数及BMP

为了说明缩放函数的具体用法,设计了一个名为CMyBitmapBMP类,将缩放函数Zoom作为BMP类的一个成员函数,同时,应用Zoom函数实现位图的缩放显示。CMyBitmap的类声明如下:

class CMyBitmap

{

public:

    CMyBitmap(); //构造函数

    ~CMyBitmap(); //析构函数

    bool LoadImg(char FileName[]); //根据文件名读入位图数据

    WORD DIBNumColors(LPSTR lpbi); 

    WORD PaletteSize(LPSTR lpbi); //计算调色板大小

    bool Zoom(double scale); //图像平滑缩放函数

    BOOL Draw( CDC *pDC, bool m_gdi_draw=true,int nX=0, int nY=0, int nWidth=-1, int nHeight=-1 ); //图像绘制函数

    BOOL SetPalette(CDC *pDC);

    long m_Width;    //图像实际宽度

    long m_Height;   //图像实际高度

    long m_datasize; //数据区的大小

    long LineBytes;  //每行像素占的字节数

    BITMAPFILEHEADER *bmfHeader; //文件头信息

    BITMAPINFO  *bInfo;

    CPalette m_Palette;         //调色板信息

    RGBQUAD *m_pPalette;

    int m_nPaletteEntries;        

    WORD m_wBitCount;  //BMP类型

    BYTE *m_PixelBuffer,*m_FileBuffer;//像素区指针,文件开始指针
  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089