当前位置: 首页 > news >正文

酒吧dj做歌网站wordpress标签没反应

酒吧dj做歌网站,wordpress标签没反应,大学生创意电子产品设计,如何查询网站被百度收录情况使用多文档编程 也可以使用单文档编程 建立一个DIB图像的显示类 ImageDib 成员变量#xff1a; 4个指针#xff1a; LPBYTE m_lpDib; //指向DIB的指针    LPBITMAPINFOHEADER m_lpBmpInfoHead; //图像信息头指针 LPRGBQUAD m_lpColorTable; //图像颜色表指针 …   使用多文档编程 也可以使用单文档编程   建立一个DIB图像的显示类 ImageDib   成员变量   4个指针     LPBYTE m_lpDib;      //指向DIB的指针    LPBITMAPINFOHEADER m_lpBmpInfoHead;  //图像信息头指针     LPRGBQUAD m_lpColorTable;     //图像颜色表指针    unsigned char * m_pImgData;     //图像数据指针   4个普通变量存放图像的参数      int m_imgWidth;       //图像的宽像素为单位      int m_imgHeight;       //图像的高像素为单位    int m_nBitCount;      //每像素占的位数     int m_nColorTableLength;      //颜色表长度多少个表项  1个句柄       HPALETTE m_hPalette;     //逻辑调色板句柄   成员函数   带参数构造函数  ImageDib(CSize size, int nBitCount, LPRGBQUAD lpColorTable, unsigned char *pImgData);           //带参数的构造函数 View Code ImageDib::ImageDib(CSize size, int nBitCount, LPRGBQUAD lpColorTable,unsigned char *pImgData) {//如果没有位图数据传入我们认为是空的DIB此时不分配DIB内存if(pImgDataNULL){m_lpDibNULL;m_lpColorTableNULL;m_pImgDataNULL; // 图像数据m_lpBmpInfoHeadNULL; // 图像信息头m_hPalette NULL;}else{//如果有位图数据传入//可以通过调用ReplaceDib()来实现 代码一样的//ReplaceDib(size,nBitCount,lpColorTable,pImgData);//图像的宽、高、每像素位数等成员变量赋值m_imgWidthsize.cx;m_imgHeightsize.cy;m_nBitCountnBitCount;//根据每像素位数计算颜色表长度m_nColorTableLengthComputeColorTabalLength(nBitCount);//每行像素所占字节数必须扩展成4的倍数int lineByte(m_imgWidth*nBitCount/83)/4*4;//位图数据缓冲区的大小图像大小int imgBufSizem_imgHeight*lineByte;//为m_lpDib一次性分配内存生成DIB结构m_lpDibnew BYTE [sizeof(BITMAPINFOHEADER) sizeof(RGBQUAD) * m_nColorTableLengthimgBufSize];//填写BITMAPINFOHEADER结构m_lpBmpInfoHead (LPBITMAPINFOHEADER) m_lpDib;m_lpBmpInfoHead-biSize sizeof(BITMAPINFOHEADER);m_lpBmpInfoHead-biWidth m_imgWidth;m_lpBmpInfoHead-biHeight m_imgHeight;m_lpBmpInfoHead-biPlanes 1;m_lpBmpInfoHead-biBitCount m_nBitCount;m_lpBmpInfoHead-biCompression BI_RGB;m_lpBmpInfoHead-biSizeImage 0;m_lpBmpInfoHead-biXPelsPerMeter 0;m_lpBmpInfoHead-biYPelsPerMeter 0;m_lpBmpInfoHead-biClrUsed m_nColorTableLength;m_lpBmpInfoHead-biClrImportant m_nColorTableLength;//调色板句柄初始化为空有颜色表时MakePalette()函数要生成新的调色板m_hPalette NULL;//如果有颜色表则将颜色表拷贝进DIB的颜色表位置if(m_nColorTableLength!0){//m_lpColorTable指向DIB颜色表的起始位置m_lpColorTable(LPRGBQUAD)(m_lpDibsizeof(BITMAPINFOHEADER));//颜色表拷贝memcpy(m_lpColorTable,lpColorTable,sizeof(RGBQUAD) * m_nColorTableLength);//创建逻辑调色板MakePalette();}//m_pImgData指向DIB位图数据起始位置m_pImgData (LPBYTE)m_lpDibsizeof(BITMAPINFOHEADER)sizeof(RGBQUAD) * m_nColorTableLength;//拷贝图像数据进DIB位图数据区memcpy(m_pImgData,pImgData,imgBufSize);}}     读文件      BOOL Read(LPCTSTR lpszPathName);   //DIB读函数 View Code BOOL ImageDib::Read(LPCTSTR lpszPathName) {//读模式打开图像文件CFile file;if (!file.Open(lpszPathName, CFile::modeRead | CFile::shareDenyWrite))return FALSE;BITMAPFILEHEADER bmfh;//读取BITMAPFILEHEADER结构到变量bmfh中int nCountfile.Read((LPVOID) bmfh, sizeof(BITMAPFILEHEADER));//为m_lpDib分配空间读取DIB进内存if(m_lpDib!NULL) delete []m_lpDib;m_lpDibnew BYTE[file.GetLength() -sizeof(BITMAPFILEHEADER)];file.Read(m_lpDib, file.GetLength() -sizeof(BITMAPFILEHEADER));//m_lpBmpInfoHead位置为m_lpDib起始位置m_lpBmpInfoHead (LPBITMAPINFOHEADER)m_lpDib;//为成员变量赋值m_imgWidthm_lpBmpInfoHead-biWidth;m_imgHeightm_lpBmpInfoHead-biHeight;m_nBitCountm_lpBmpInfoHead-biBitCount; //计算颜色表长度m_nColorTableLength ComputeColorTabalLength(m_lpBmpInfoHead-biBitCount);//如果有颜色表,则创建逻辑调色板m_hPalette NULL;if(m_nColorTableLength!0){m_lpColorTable(LPRGBQUAD)(m_lpDibsizeof(BITMAPINFOHEADER));MakePalette();}//m_pImgData指向DIB的位图数据起始位置m_pImgData (LPBYTE)m_lpDibsizeof(BITMAPINFOHEADER) sizeof(RGBQUAD) * m_nColorTableLength;return TRUE; }         写文件     BOOL Write(LPCTSTR lpszPathName);       //DIB写函数 View Code BOOL ImageDib::Write(LPCTSTR lpszPathName) {//写模式打开文件CFile file;if (!file.Open(lpszPathName, CFile::modeCreate | CFile::modeReadWrite | CFile::shareExclusive))return FALSE;//填写文件头结构BITMAPFILEHEADER bmfh;bmfh.bfType 0x4d42; // BMbmfh.bfSize 0;bmfh.bfReserved1 bmfh.bfReserved2 0;bmfh.bfOffBits sizeof(BITMAPFILEHEADER) sizeof(BITMAPINFOHEADER) sizeof(RGBQUAD) * m_nColorTableLength; try {//文件头结构写进文件file.Write((LPVOID) bmfh, sizeof(BITMAPFILEHEADER));//文件信息头结构写进文件file.Write(m_lpBmpInfoHead, sizeof(BITMAPINFOHEADER));//如果有颜色表的话颜色表写进文件if(m_nColorTableLength!0)file.Write(m_lpColorTable, sizeof(RGBQUAD) * m_nColorTableLength);//位图数据写进文件int imgBufSize(m_imgWidth*m_nBitCount/83)/4*4*m_imgHeight;file.Write(m_pImgData, imgBufSize);}catch(CException* pe) {pe-Delete();AfxMessageBox(write error);return FALSE;}//函数返回return TRUE; }     计算颜色表长度  int ComputeColorTabalLength(int nBitCount); //计算颜色表的长度 View Code int ImageDib::ComputeColorTabalLength(int nBitCount) {int colorTableLength;switch(nBitCount) {case 1:colorTableLength 2;break;case 4:colorTableLength 16;break;case 8:colorTableLength 256;break;case 16:case 24:case 32:colorTableLength 0;break;default:ASSERT(FALSE);}ASSERT((colorTableLength 0) (colorTableLength 256)); return colorTableLength; }     创建逻辑调色板  void MakePalette();      //创建逻辑调色板 View Code void ImageDib::MakePalette() {//如果颜色表长度为0则不创建逻辑调色板if(m_nColorTableLength 0) return;//删除旧的逻辑调色板句柄if(m_hPalette ! NULL) ::DeleteObject(m_hPalette);//申请空间根据颜色表生成LOGPALETTE结构LPLOGPALETTE pLogPal (LPLOGPALETTE) new char[2 * sizeof(WORD) m_nColorTableLength * sizeof(PALETTEENTRY)];pLogPal-palVersion 0x300;pLogPal-palNumEntries m_nColorTableLength;LPRGBQUAD m_lpDibQuad (LPRGBQUAD) m_lpColorTable;for(int i 0; i m_nColorTableLength; i) {pLogPal-palPalEntry[i].peRed m_lpDibQuad-rgbRed;pLogPal-palPalEntry[i].peGreen m_lpDibQuad-rgbGreen;pLogPal-palPalEntry[i].peBlue m_lpDibQuad-rgbBlue;pLogPal-palPalEntry[i].peFlags 0;m_lpDibQuad;} //创建逻辑调色板m_hPalette ::CreatePalette(pLogPal);//释放空间delete pLogPal; }     读取图像维数  CSize GetDimensions();     //读取图像维数 View Code CSize ImageDib::GetDimensions() { if(m_lpDib NULL) return CSize(0, 0);return CSize(m_imgWidth, m_imgHeight); }     图像绘制      BOOL Draw(CDC* pDC, CPoint origin, CSize size); //图像绘制 View Code BOOL ImageDib::Draw(CDC* pDC, CPoint origin, CSize size) {HPALETTE hOldPalNULL; //旧的调色板句柄if(m_lpDib NULL) return FALSE; //如果DIB为空则返回0if(m_hPalette ! NULL) { //如果DIB有调色板//将调色板选进设备环境中hOldPal::SelectPalette(pDC-GetSafeHdc(), m_hPalette, TRUE);pDC-RealizePalette(); }pDC-SetStretchBltMode(COLORONCOLOR); //设置位图伸缩模式//将DIB在pDC所指向的设备上进行显示::StretchDIBits(pDC-GetSafeHdc(), origin.x, origin.y, size.cx, size.cy,0, 0, m_lpBmpInfoHead-biWidth, m_lpBmpInfoHead-biHeight,m_pImgData,(LPBITMAPINFO) m_lpBmpInfoHead, DIB_RGB_COLORS, SRCCOPY);if(hOldPal!NULL) //恢复旧的调色板::SelectPalette(pDC-GetSafeHdc(), hOldPal, TRUE);return TRUE; }     用新的数据替代DIBvoid ReplaceDib(CSize size, int nBitCount, LPRGBQUAD lpColorTable, unsigned char *pImgData);               //用新的数据替换DIB View Code void ImageDib::ReplaceDib(CSize size, int nBitCount, LPRGBQUAD lpColorTable,unsigned char *pImgData) { //释放原DIB所占空间Empty();//成员变量赋值m_imgWidthsize.cx;m_imgHeightsize.cy;m_nBitCountnBitCount;//计算颜色表的长度m_nColorTableLengthComputeColorTabalLength(nBitCount);//每行像素所占字节数扩展成4的倍数int lineByte(m_imgWidth*nBitCount/83)/4*4;//位图数据的大小int imgBufSizem_imgHeight*lineByte;//为m_lpDib重新分配空间以存放新的DIBm_lpDibnew BYTE [sizeof(BITMAPINFOHEADER) sizeof(RGBQUAD) * m_nColorTableLengthimgBufSize];//填写位图信息头BITMAPINFOHEADER结构m_lpBmpInfoHead (LPBITMAPINFOHEADER) m_lpDib;m_lpBmpInfoHead-biSize sizeof(BITMAPINFOHEADER);m_lpBmpInfoHead-biWidth m_imgWidth;m_lpBmpInfoHead-biHeight m_imgHeight;m_lpBmpInfoHead-biPlanes 1;m_lpBmpInfoHead-biBitCount m_nBitCount;m_lpBmpInfoHead-biCompression BI_RGB;m_lpBmpInfoHead-biSizeImage 0;m_lpBmpInfoHead-biXPelsPerMeter 0;m_lpBmpInfoHead-biYPelsPerMeter 0;m_lpBmpInfoHead-biClrUsed m_nColorTableLength;m_lpBmpInfoHead-biClrImportant m_nColorTableLength;//调色板置空m_hPalette NULL;//如果有颜色表则将颜色表拷贝至新生成的DIB并创建逻辑调色板if(m_nColorTableLength!0){m_lpColorTable(LPRGBQUAD)(m_lpDibsizeof(BITMAPINFOHEADER));memcpy(m_lpColorTable,lpColorTable,sizeof(RGBQUAD) * m_nColorTableLength);MakePalette();}//m_pImgData指向DIB的位图数据起始位置m_pImgData (LPBYTE)m_lpDibsizeof(BITMAPINFOHEADER)sizeof(RGBQUAD) * m_nColorTableLength;//将新位图数据拷贝至新的DIB中memcpy(m_pImgData,pImgData,imgBufSize); }     清理空间函数  void Empty();                          //清理空间 View Code void ImageDib::Empty() {//释放DIB内存缓冲区if(m_lpDib ! NULL) {delete [] m_lpDib;m_lpDibNULL;m_lpColorTableNULL;m_pImgDataNULL; m_lpBmpInfoHeadNULL;}//释放逻辑调色板缓冲区if(m_hPalette ! NULL){::DeleteObject(m_hPalette);m_hPalette NULL;} }     默认构造函数 View Code ImageDib::ImageDib() {m_lpDibNULL;//初始化m_lpDib为空。m_lpColorTableNULL; //颜色表指针为空m_pImgDataNULL; //图像数据指针为空m_lpBmpInfoHeadNULL; //图像信息头指针为空m_hPalette NULL; //调色板为空 }   默认析构函数 View Code ImageDib::~ImageDib() {//释放m_lpDib所指向的内存缓冲区if(m_lpDib ! NULL) delete [] m_lpDib; //如果有调色板释放调色板缓冲区if(m_hPalette ! NULL)::DeleteObject(m_hPalette); }   编写好ImageDib类后在doc文件类中添加一个ImageDib类的指针在构造函数中new出来在析构函数中delete然后重写OnOpenDocument()函数 在其中调用读函数打开图像 在View类的OnDraw()中调用ImageDib类的绘制函数 将图像绘制在打开的新文件中 总结编程的关键在于几个指针的赋值指向DIB的指针的分配空间位图信息头等结构的赋值等等。 只要记住   BMP文件位图头文件位图信息头颜色表数据块    等号后边的内容按顺序写的   DIB位图信息头颜色表数据块   位图信息位图信息头颜色表 这些图像文件的存储组成及顺序万事OK        转载于:https://www.cnblogs.com/Anidot/archive/2012/04/23/2466495.html
http://www.yutouwan.com/news/111346/

相关文章:

  • 摄影网站建设策划完整方案怎么做网站呢
  • 手机免费制作自己的网站江苏省住房城乡建设厅官方网站
  • 东莞阿里巴巴网站建设黄骅贴吧新鲜事
  • 门户网站系统开发建设做一婚恋网站多少钱
  • 深圳做网站公司那家比较好电子商务网站html模板
  • 百度网站推广外包孟州哪里可以做网站
  • 手机网站cms广州网站建设 名片制作 网站管理
  • 免费发布信息网站有哪些山东网站建设
  • 厦门微网站建设专业的营销网站
  • 网站建设中可能遇到的问题wordpress如何生成app
  • 免费发布信息网站大全注册任意的关键词或网站做引流
  • 如何查看网站的服务器位置制作网页查询系统
  • 织梦是什么网站建设文化网站的目的和意义
  • 中小企业门户网站建设策略怎么上网做网站
  • 郑州建站程序坪山住房及建设局网站
  • 网站开发工程师资格证wordpress转enlog
  • 做的网站太大怎么办公司网站维护分工
  • 莆田制作公司网站东南亚cod建站工具
  • 河北三河建设厅网站6本机运行wordpress
  • 遂宁网站建设哪家好启信宝
  • 专做影视评论的网站网站外接
  • 西安网站建设甘肃省建设厅官方网站
  • 建网站 网站内容怎么做网站建设又叫什么软件
  • 自助建站固定在网站底部
  • 网站图怎么做会高清室内设计学校哪些
  • 微信网站开发视频企业邮箱手机怎么登录
  • 地方门户网站建站流程180天做180个网站
  • 网站有什么用中信建设有限责任公司招聘
  • 免费上外国网站的浏览器建设系统网站
  • 怎样投网站广告wordpress 文章链接地址