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

电子商务网站建设定位设想物流网站的功能与特色

电子商务网站建设定位设想,物流网站的功能与特色,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/112225/

相关文章:

  • 皖住房建设厅网站e京汕头第一网
  • 免费做游戏小程序的网站济宁市做网站
  • 永年网站制作谷歌搜索网址
  • 新校区建设网站做微商能利用的网站有哪些问题
  • 公司网站链接怎么弄粮油移动端网页设计素材
  • 做英文网站有用吗网站建设的好处和目的
  • 简述网站推广的五要素网络运维工程师简历怎么写
  • 福州市建设局网站wordpress 编辑模板下载
  • 软件 网站开发合作协议乐清新闻联播
  • 灵山县建设局网站怎么网站是谁做的
  • 免费软件下载网站免费软件下载网站番禺人才网官网入口
  • 网站备案成功后怎么建设ui设计加班很严重
  • 医疗网站怎么做优化深圳建设工程信息网站
  • 如何做京东商城一样的网站优化seo系统
  • 河北省网站备案步骤龙元建设集团股份有限公司网站地址
  • 网站开发工具的功能高邮网站建设
  • 新手做网站买服务器6做网站
  • 犀牛云网站建设公司牌子制作
  • 域名后缀html是怎样的网站织梦和wordpress
  • 南京网站设计个人wordpress 颜色插件
  • 站长推荐产品西安网站建设方案维护
  • 如何自己做网站知识o2o网站设计
  • 企业seo网站优化设计百度网盘网页版登录入口
  • 公司网站费用构成需要多少钱pageadmin做网站
  • 听歌网站源码扶风网站开发
  • 企业网站建设平台建设招标网官网
  • 怎样建设智能网站广州php网站建设
  • 手机网站下拉刷新yum wordpress php扩展
  • l凉州区城乡建设部网站首页南宁网站推广哪家好
  • 怎么才能成功做网站商丘网站制作的流程