• 大小: 23.21MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-08-06
  • 语言: C/C++
  • 标签:

资源简介

基于MFC显示tiff图像,内有代码说明

资源截图

代码片段和文件信息

#include “StdAfx.h“
#include “Image1.h“


CImage1::CImage1(void)//在构造函数中,对数据成员初始化;
{
nWidth=0;
nHeight=0;
nBitCount=0;
nBytesPerLine=0;
nBytesPerPixel=0;
nNumColors=0;
nSize=0;
hMemDC=NULL;
}


CImage1::~CImage1(void)
{
}

void CImage1::CreateDIB(int Dxint Dyint BitsDWORD dwFlags)//位图的宽度,高度,每个像素的位数,默认参数;

{
BITMAPINFOHEADER BIH={400010000000};//为位图信息头赋初值
LPBITMAPINFO lpBmi;//位图信息指针,指向位图信息结构,该结构包括位图信息头和颜色表;
nWidth=Dx;
nHeight=Dy;
nBitCount=Bits;
nBytesPerLine=(nWidth*nBitCount+31)/32*4;//使每一行的字节数为4的倍数,每个像素3个字节
nBytesPerPixel=nBitCount/8;
if (nBitCount>8)
{
nNumColors=0;
}
else
{
nNumColors=1< }
nSize=nBytesPerLine*nHeight;

BIH.biWidth=nWidth;
BIH.biHeight=nHeight;
BIH.biBitCount=nBitCount; //重新设置位图信息头的部分参数

lpBmi=(LPBITMAPINFO)malloc(40+sizeof(RGBQUAD)*nNumColors);
memcpy(lpBmi&BIH40+sizeof(RGBQUAD)*nNumColors);
hBitmap=CreateDIBSection(NULLlpBmiDIB_RGB_COLORS(void**)&lpBitsNULL0);//创建一个可以直接写入的DIB
free(lpBmi);    //CreateDIBSection函数第一个参数为NULL时,系统将为DIB分配内存返回一个代表DIB的位图句柄(hBitmap)

}
bool CImage1::IsNull()
{
if (hBitmap==NULL)
{
return true;
}
else
{
return false;
}
}
HDC CImage1::GetDC()
{
hMemDC=CreateCompatibleDC(NULL);
Selectobject(hMemDChBitmap);//把代表DIB位图的句柄,放入DC
return hMemDC;
}
void CImage1::ReleaseDC()
{
if (hMemDC)
{
Deleteobject(hMemDC);
DeleteDC(hMemDC);
}
}

int CImage1::GetWidth()
{
return nWidth;
}
int CImage1::GetHeight()
{
return nHeight;
}
bool CImage1::LoadTIF(const char* pszFileName)
{

bool bFlag;
//char drive[_MAX_DRIVE];
//char dir[_MAX_DIR];
//char fname[_MAX_FNAME];
//char ext[_MAX_EXT];
//_splitpath(pszFileNamedrivedirfnameext);
DWORD ColorMap;
FILE *fp;
TIF_IFH head;
TIF_DE dir[25];//要确保DE个数小于25
WORD tif_pal[768];
WORD  kmntnnc1c2DxDyBits;
WORD TifBytesPerLineOffBitsImageTypeCompression;
byte VgaPal[768]BmpPal[1024]*buf*p;
int ijflag=0;
fp=fopen(pszFileName“rb“);
if (fp==NULL)
{
return(false);
}
fread(&head24fp);
fseek(fphead.FirstIFDSEEK_SET);
fread(&nn21fp);
fread(dir12nnfp);
for (i=0;i
switch(dir[i].Tag)
{
case IMAGEWIDTH :
Dx=(WORD) dir[i].ValOff;
break;
case IMAGELENGTH :
Dy=(WORD) dir[i].ValOff;
break;
case BITSPERSAMPLE :
if (dir[i].Length>2)  Bits=24;
else Bits=(WORD) dir[i].ValOff;
break;
case COMPRESSION :
Compression=(WORD) dir[i].ValOff;  
break;
case PHOTOMETRICINTERP :
ImageType=(WORD) dir[i].ValOff;    
break;
case STRIPOFFSETS :
if (dir[i].Length==1)
OffBits=(WORD) dir[i].ValOff;
else {
fseek(fpdir[i].ValOffSEEK_SET);
fread(&OffBits41fp);
}
break;
case COLORMAP :
ColorMap=dir[i].ValOff;
n=(WORD) dir[i].Length;
fseek(fpColorMapSEEK_SET);
fread(tif_pal2nfp);
p=(BYTE *) VgaPal;    
n/=3;
for (m=0;m

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     238592  2013-01-24 12:42  ShowTiff\Debug\ShowTiff.exe

     文件    1815724  2013-01-24 12:42  ShowTiff\Debug\ShowTiff.ilk

     文件    6065152  2013-01-24 12:42  ShowTiff\Debug\ShowTiff.pdb

     文件      14030  2013-01-24 12:42  ShowTiff\ShowTiff\Debug\cl.command.1.tlog

     文件     228514  2013-01-24 12:42  ShowTiff\ShowTiff\Debug\CL.read.1.tlog

     文件      11988  2013-01-24 12:42  ShowTiff\ShowTiff\Debug\CL.write.1.tlog

     文件      19055  2013-01-07 10:27  ShowTiff\ShowTiff\Debug\Image1.obj

     文件          2  2013-01-24 12:42  ShowTiff\ShowTiff\Debug\link-cvtres.read.1.tlog

     文件          2  2013-01-24 12:42  ShowTiff\ShowTiff\Debug\link-cvtres.write.1.tlog

     文件          2  2013-01-24 12:42  ShowTiff\ShowTiff\Debug\link.1144-cvtres.read.1.tlog

     文件          2  2013-01-24 12:42  ShowTiff\ShowTiff\Debug\link.1144-cvtres.write.1.tlog

     文件          2  2013-01-24 12:42  ShowTiff\ShowTiff\Debug\link.1144.read.1.tlog

     文件          2  2013-01-24 12:42  ShowTiff\ShowTiff\Debug\link.1144.write.1.tlog

     文件          2  2013-01-24 12:42  ShowTiff\ShowTiff\Debug\link.3888-cvtres.read.1.tlog

     文件          2  2013-01-24 12:42  ShowTiff\ShowTiff\Debug\link.3888-cvtres.write.1.tlog

     文件          2  2013-01-24 12:42  ShowTiff\ShowTiff\Debug\link.3888.read.1.tlog

     文件          2  2013-01-24 12:42  ShowTiff\ShowTiff\Debug\link.3888.write.1.tlog

     文件          2  2013-01-24 12:42  ShowTiff\ShowTiff\Debug\link.8160-cvtres.read.1.tlog

     文件          2  2013-01-24 12:42  ShowTiff\ShowTiff\Debug\link.8160-cvtres.write.1.tlog

     文件          2  2013-01-24 12:42  ShowTiff\ShowTiff\Debug\link.8160.read.1.tlog

     文件          2  2013-01-24 12:42  ShowTiff\ShowTiff\Debug\link.8160.write.1.tlog

     文件       7268  2013-01-24 12:42  ShowTiff\ShowTiff\Debug\link.command.1.tlog

     文件      19282  2013-01-24 12:42  ShowTiff\ShowTiff\Debug\link.read.1.tlog

     文件       5246  2013-01-24 12:42  ShowTiff\ShowTiff\Debug\link.write.1.tlog

     文件      89621  2013-01-07 10:27  ShowTiff\ShowTiff\Debug\MainFrm.obj

     文件       2324  2013-01-24 12:42  ShowTiff\ShowTiff\Debug\mt.command.1.tlog

     文件       2180  2013-01-24 12:42  ShowTiff\ShowTiff\Debug\mt.read.1.tlog

     文件        610  2013-01-24 12:42  ShowTiff\ShowTiff\Debug\mt.write.1.tlog

     文件       3476  2013-01-07 10:27  ShowTiff\ShowTiff\Debug\rc.command.1.tlog

     文件      12848  2013-01-07 10:27  ShowTiff\ShowTiff\Debug\rc.read.1.tlog

............此处省略56个文件信息

评论

共有 条评论

相关资源