求VC++6.0图像vc 6.0编程语言高手

求VC++6.0编程软件、要能用的。
求VC++6.0编程软件、要能用的。 10
各位高手应该都有的吧?发安装程序包到、或者提供个下载地址吧、不要直接百度的、我下很多了都不好用。
您好,请问您想要什么类型的
VC++6.0有功能强大的企业版
精简功能的个人版
有汉化的中文版
未汉化的英文版
为您提供企业版下载地址
哇、好专业、、、、、、、、
个人中文版的吧、
您好,SA团队为您解答
下面是简体中文企业版的下载地址(建议您使用英文版的,中文版使用中常常出错,并且汉化并非完全,只汉化菜单)
有木有中文滴……不要电驴滴................我看不懂英文啊毕竟我才14
点进下载是时候显示“Service 
Unavailable”?
您好,上面的就是中文版的了。。。当然安装过程还是英文的。。。目前网络上本团队还找不到中文安装的vc6.0
因为企业版的功能比较全,上面的地址指向一个简体中文企业版的vc6.0
安装的时侯选典型安装 “Typical”
其它的您可以全部点击“下一步”
您好,本人17岁,跟本人一起学编程的最小的是15岁,我们也不是很懂英语。。。
毕竟编程用的英语有限,所以不要被“不懂英语就学不了编程”之类的话误导
您好,关于您说的显示“Service& Unavailable”。。无法为您解决,因为本人下载并没有出错,所以并非资源的问题
也许是你安装的时候出错了,应该选择“Typical”
其他回答 (2)
以下链接是微软官方原版的VS6.0资源,如果下载速度慢,请追问,我把离线资源共享给您,只不过需要用QQ旋风下载。《Microsoft Visual Studio 6.0 Enterprise Edition》(完整9CD,带中文MSDN Library),传说中是微软官方原版的镜像。VSE600ENU1.iso 613.5MB&ed2k://|file|VSE600ENU1.iso||be91fcd2f1a949b593ff|h=f2j2kjqelvpgdcandpfe6l7ewqnko6hz|/VSE600ENU2.iso 588.3MB&ed2k://|file|VSE600ENU2.iso||b4e95db886e0c6eb28d28af577e81bad|h=zord2q54wclllmfih3mtzmfbuvgsmfh6|/VSE600ENU3.iso 99.5MB&ed2k://|file|VSE600ENU3.iso||ae14e311fb751ca28a980661ddee9c1c|h=rmulgfyelytun2indzfyasu55cztfnws|/VJP60_ENU1.iso 426.7MB&ed2k://|file|VJP60_ENU1.iso|249e1d5e0ba59e1db7|h=3v24ad7s7rnaheq6uqdjiooh5wa55og3|/VBE600CHS1.iso 323.7MB&ed2k://|file|VBE600CHS1.iso||eebb76e172ec5ff14d0df9c2bd760bee|h=dviuvowajgiqdccw4dmfwrs7mxlewvcx|/VBE600CHS2.iso 555.7MB&ed2k://|file|VBE600CHS2.iso|bcf7b6e4|h=76exgqfr3r33zn3sfgmjif55i5qak6qt|/VF600CHS1.iso 197.4MB&ed2k://|file|VF600CHS1.iso||ca94bbb52ebac41df5525|h=2kci76dlfs37xemo2kkeugxe6s4jz6qv|/DN60ACHS1.iso 565.3MB&ed2k://|file|DN60ACHS1.iso||e734045fee678f6ee8863|h=goindspo2pxctfwp3os4e3zwhnuhzw6h|/DN60ACHS2.iso 550.8MB&ed2k://|file|DN60ACHS2.iso|dcaa05e518a|h=2ph2udc55re35ro2hjfy6do4mxrcs7vq|/
的确,现在这种资源不好找,哎。。。
我用了很久的一个版本蛮好的。可惜网速卡,传不了
那还找得到下载地址吗?
我一直都放在自己电脑里面,前段时间也试着帮同学找的
不过不好找。楼下那位给的下载地址可以试试
一般高压缩的在185M之上
压缩的在400M左右
我用的一直都是一个破解版的,蛮好的
貌似这个有简版的吧。不清楚,呵呵
相关知识等待您来回答
编程领域专家
& &SOGOU - 京ICP证050897号图像编程学习笔记3――图像旋转
以下文字内容copy于&&数字图像处理入门&&,code为自己实现,是win32控制台程序。
旋转(rotation)有一个绕着什么转的问题,通常的做法是以图象的中心为圆心旋转,举个例子,图2.7旋转30度(顺时针方向)后如图2.8所示:
可以看出,旋转后图象变大了。另一种做法是不让图象变大,转出的部分被裁剪掉。如图2.9所示。
我们采用第一种做法,首先给出变换矩阵。在我们熟悉的坐标系中,将一个点顺时针旋转a角后的坐标变换公式,如图2.10所示,r为该点到原点的距离,在旋转过程中,r保持不变;b为r与x轴之间的夹角。
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
旋转前:x0=rcosb;y0=rsinb
旋转a角度后:
x1=rcos(b-a)=rcosbcosa+rsinbsina= x0cosa+y0sina;
y1=rsin(b-a)=rsinbcosa-rcosbsina= -x0sina+y0cosa;
以矩阵的形式表示:& & & &
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &(2.5)&
上面的公式中,坐标系xoy是以图象的中心为原点,向右为x轴正方向,向上为y轴正方向。它和以图象左上角点为原点o&,向右为x&轴正方向,向下为y&轴正方向的坐标系x&o&y&之间的转换关系如何呢?如图2.11所示。
图2.11 & &两种坐标系间的转换关系
设图象的宽为w,高为h,容易得到:
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &(2.6)&
逆变换为:
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & (2.7)&
有了上面的公式,我们可以把变换分成三步:
1.将坐标系o&变成o;
2.将该点顺时针旋转a角;
3.将坐标系o变回o&,这样,我们就得到了变换矩阵,是上面三个矩阵的级联。
& & & & & & & & & & & & & & & & & & & & & & & & & &(2.8)&
要注意的是,因为新图变大,所以上面公式中出现了wold,hold,wnew,hnew,它们分别表示原图(old)和新图(new)的宽、高。我们从图2.8中容易看出:wnew=max(|x4-x1|,|x3-x2|);hnew=max(|y4-y1|,|y3-y2|)。
(2.8)的逆变换为
& & & & & & & & & & & & & & & & & & & & & &&(2.9)&
这样,对于新图中的每一点,我们就可以根据公式(2.9)求出对应原图中的点,得到它的灰度。如果超出原图范围,则填成白色。要注意的是,由于有浮点运算,计算出来点的坐标可能不是整数,采用取整处理,即找最接近的点,这样会带来一些误差(图象可能会出现锯齿)。更精确的方法是采用插值,将在图象缩放时介绍。
源程序如下:
* 程序名: Rotation.cpp&
* 功 &能: 实现灰度图像的旋转,如果超出原图范围,则用白色填充&
* & & & & 测试位图为test.bmp放到工程目录下&
#include &iostream& &&
#include &fstream& &&
#include &cstring& &&
#include &cmath& &&
#include &.h& &&
#define PI 3. &&
#define RADIAN(angle) (((angle)*PI)/180.0) &&
BITMAPFILEHEADER bmpFileH & //bmp文件头 &&
BITMAPINFOHEADER bmpInfoH & //bmp信息头 &&
RGBQUAD *pColorT & & & & & &//bmp颜色表 & & &
unsigned char *pBmpD & & & &//bmp位图数据 &&
unsigned char *pNewBmpD & //旋转后bmp位图数据 &&
int newImgS & & & & //旋转后图像大小 &&
* 函数名: readBmp&
* 参 &数: fileName--要读取文件的文件名&
* 功 &能: 读取bmp位图数据,成功返回TRUE,否则返回FALSE&
BOOL readBmp(char *fileName) &
& & FILE *fp = fopen(fileName,&rb&); & //以二进制读方式打开 &&
& & if (NULL == fp) &
& & & & cout&&&The file is opened failure!&&& &
& & & & return FALSE; &
& & //读取信息到相应的变量中 &&
& & fread(&bmpFileHeader,sizeof(BITMAPFILEHEADER),1,fp); &
& & fread(&bmpInfoHeader,sizeof(BITMAPINFOHEADER),1,fp); &
& & pColorTable = new RGBQUAD[256]; &
& & fread(pColorTable,sizeof(RGBQUAD),256,fp); &
& & int imgSize = bmpInfoHeader.biSizeI & & //文图数据的大小,4的倍数 &&
& & pBmpData = new &unsigned char[imgSize]; &
& & fread(pBmpData,sizeof(unsigned char),imgSize,fp); &
& & fclose(fp); &
& & return TRUE; &
* 函数名: rotation&
* 参 &数: rotAngle--要转换的角度&
* 功 &能: 实现bmp图像的旋转&
void rotation(int rotAngle) &
& & double cosa,sina,srcX[4],srcY[4],dstX[4],dstY[4], &
& & int oldWidth,oldHeight,newWidth,newH &
& & rad = (double)RADIAN(rotAngle); &
& & cosa = cos(rad); &
& & sina = sin(rad); &
& & //原图宽与高 &&
& & oldWidth = bmpInfoHeader.biW &
& & oldHeight = bmpInfoHeader.biH &
& & //原图四个角的坐标 &&
& & srcX[0] = -0.5 * oldW &
& & srcY[0] = 0.5 * oldH &
& & srcX[1] = 0.5 * oldW &
& & srcY[1] = 0.5 * oldH &
& & srcX[2] = 0.5 * oldW &
& & srcY[2] = -0.5 * oldH &
& & srcX[3] = -0.5 * oldW &
& & srcY[3] = -0.5 * oldH &
& & //新图四个角坐标 &&
& & for(int i = 0; i & 4; i++ ) &
& & & & dstX[i] = cosa * srcX[i] + sina * srcY[i]; &
& & & & dstY[i] = -sina * srcX[i] + cosa * srcY[i]; &
// & & &cout&&dstY[i]&& &&
& & //新图的宽与高,向上取整 &&
& & bmpInfoHeader.biWidth = newWidth = (int)(max(fabs(dstX[0] - dstX[2]),fabs(dstX[1] - dstX[3])) + 0.5); &
& & bmpInfoHeader.biHeight = newHeight = (int)(max(fabs(dstY[0] - dstY[2]),fabs(dstY[1] - dstY[3])) + 0.5); &
// &cout&&newWidth&&newHeight&& &&
& & //新图位图数据大小 &&
& & bmpInfoHeader.biSizeImage = newImgSize = newHeight * ((newWidth * bmpInfoHeader.biBitCount + 31) / 32 * 4); &
& & pNewBmpData = new unsigned char[newImgSize]; &
& & double temp1,temp2; & //计算矩阵(2.9)中的两个常数,这样不用以后每次都计算了 &&
& & temp1 = -0.5 * newWidth * cosa - 0.5 * newHeight * sina + 0.5 * oldW &
& & temp2 = 0.5 * newWidth * sina - 0.5 * newHeight * cosa + 0.5 * oldH &
& & memset(pNewBmpData,(BYTE)255,newImgSize); & //先全部填充成白色 &&
& & int x0,y0,x1,y1; &
& & unsigned char *pOldTemp,*pNewT &
& & int oldLineByte,newLineB &
& & oldLineByte = (oldWidth * bmpInfoHeader.biBitCount + 31) / 32 * 4; &
& & newLineByte = (newWidth * bmpInfoHeader.biBitCount + 31) / 32 * 4; &
& & //把旋转后的图像数据对应存储到pNewBmpData相应位置 &&
& & for(y1 = 0; y1 & newH y1++) &
& & & & for(x1 = 0; x1 & newW x1++ ) &
& & & & { &
& & & & & & x0 = (int)(x1 * cosa + y1 * sina + temp1); &
& & & & & & y0 = (int)(-x1 * sina + y1 * cosa + temp2); &
& & & & & & if((x0 &= 0 && x0 & oldWidth) && (y0 &= 0 && y0 & oldHeight)) & &//这里不能为&=oldWidth或oldHeight &&
& & & & & & { &
& & & & & & & & pOldTemp = pBmpData + (oldHeight - 1 - y0) * oldLineByte + x0; &
& & & & & & & & pNewTemp = pNewBmpData + (newHeight - 1 - y1) * newLineByte + x1; &
& & & & & & & & *pNewTemp = *pOldT &
& & & & & & } &
& & & & } &
* 函数名: writeBmp&
* 参 &数: bmpName -- 旋转后的bmp文件名&
* 功 &能: 新建一个bmp文件,把旋转后的图像信息存入其中&
void writeBmp(char *bmpName) &
& & FILE *fp = fopen(bmpName,&wb&); &//以二进制写方式打开 &&
& & if(NULL == fp) &
& & & & cout&&&The file is opened failure&&& &
& & //写入选装后图像信息 &&
& & fwrite(&bmpFileHeader,sizeof(BITMAPFILEHEADER),1,fp); &
& & fwrite(&bmpInfoHeader,sizeof(BITMAPINFOHEADER),1,fp); &
& & fwrite(pColorTable,sizeof(RGBQUAD),256,fp); &
& & fwrite(pNewBmpData,sizeof(unsigned char),newImgSize,fp); &
& & fclose(fp); &
& & & & delete []pColorT &
& & & & delete []pNewBmpD &
& & & & delete []pBmpD &
* 函数名: work&
* 参 &数: 无&
* 功 &能: 实现处理工作&
void work() &
& & char readBmpName[] = &test.bmp&; &
& & if ( !readBmp(readBmpName)) &
& & & & cout&&&The file &&&readBmpName&&&is read failure&&& &
& & cout&&&please input the angle to rotate(Clockwise):&; &
& & int rotA &
& & cin&&rotA &
& & rotation(rotAngle); &
& & char writeBmpName[] = &test_new.bmp&; &
& & writeBmp(writeBmpName); &
int main() &
& & work(); &
& & return 0; &
* 程序名: Rotation.cpp
* 功 &能: 实现灰度图像的旋转,如果超出原图范围,则用白色填充
* & & & & 测试位图为test.bmp放到工程目录下
#include &iostream&
#include &fstream&
#include &cstring&
#include &cmath&
#include &windows.h&
#define PI 3.
#define RADIAN(angle) (((angle)*PI)/180.0)
BITMAPFILEHEADER bmpFileH & //bmp文件头
BITMAPINFOHEADER bmpInfoH
&//bmp信息头
RGBQUAD *pColorT
//bmp颜色表
unsigned char *pBmpD //bmp位图数据
unsigned char *pNewBmpD & //旋转后bmp位图数据
int newImgS //旋转后图像大小
* 函数名: readBmp
* 参 &数: fileName--要读取文件的文件名
* 功 &能: 读取bmp位图数据,成功返回TRUE,否则返回FALSE
BOOL readBmp(char *fileName)
FILE *fp = fopen(fileName,&rb&); & //以二进制读方式打开
if (NULL == fp)
cout&&&The file is opened failure!&&&
return FALSE;
//读取信息到相应的变量中
fread(&bmpFileHeader,sizeof(BITMAPFILEHEADER),1,fp);
fread(&bmpInfoHeader,sizeof(BITMAPINFOHEADER),1,fp);
pColorTable = new RGBQUAD[256];
fread(pColorTable,sizeof(RGBQUAD),256,fp);
int imgSize = bmpInfoHeader.biSizeI & & //文图数据的大小,4的倍数
pBmpData = new &unsigned char[imgSize];
fread(pBmpData,sizeof(unsigned char),imgSize,fp);
fclose(fp);
return TRUE;
* 函数名: rotation
* 参 &数: rotAngle--要转换的角度
* 功 &能: 实现bmp图像的旋转
void rotation(int rotAngle)
double cosa,sina,srcX[4],srcY[4],dstX[4],dstY[4],
int oldWidth,oldHeight,newWidth,newH
rad = (double)RADIAN(rotAngle);
cosa = cos(rad);
sina = sin(rad);
//原图宽与高
oldWidth = bmpInfoHeader.biW
oldHeight = bmpInfoHeader.biH
//原图四个角的坐标
srcX[0] = -0.5 * oldW
srcY[0] = 0.5 * oldH
srcX[1] = 0.5 * oldW
srcY[1] = 0.5 * oldH
srcX[2] = 0.5 * oldW
srcY[2] = -0.5 * oldH
srcX[3] = -0.5 * oldW
srcY[3] = -0.5 * oldH
//新图四个角坐标
for(int i = 0; i & 4; i++ )
dstX[i] = cosa * srcX[i] + sina * srcY[i];
dstY[i] = -sina * srcX[i] + cosa * srcY[i];
// cout&&dstY[i]&&
//新图的宽与高,向上取整
bmpInfoHeader.biWidth = newWidth = (int)(max(fabs(dstX[0] - dstX[2]),fabs(dstX[1] - dstX[3])) + 0.5);
bmpInfoHeader.biHeight = newHeight = (int)(max(fabs(dstY[0] - dstY[2]),fabs(dstY[1] - dstY[3])) + 0.5);
// cout&&newWidth&&newHeight&&
//新图位图数据大小
bmpInfoHeader.biSizeImage = newImgSize = newHeight * ((newWidth * bmpInfoHeader.biBitCount + 31) / 32 * 4);
pNewBmpData = new unsigned char[newImgSize];
double temp1,temp2; & //计算矩阵(2.9)中的两个常数,这样不用以后每次都计算了
temp1 = -0.5 * newWidth * cosa - 0.5 * newHeight * sina + 0.5 * oldW
temp2 = 0.5 * newWidth * sina - 0.5 * newHeight * cosa + 0.5 * oldH
memset(pNewBmpData,(BYTE)255,newImgSize); & //先全部填充成白色
int x0,y0,x1,y1;
unsigned char *pOldTemp,*pNewT
int oldLineByte,newLineB
oldLineByte = (oldWidth * bmpInfoHeader.biBitCount + 31) / 32 * 4;
newLineByte = (newWidth * bmpInfoHeader.biBitCount + 31) / 32 * 4;
//把旋转后的图像数据对应存储到pNewBmpData相应位置
for(y1 = 0; y1 & newH y1++)
for(x1 = 0; x1 & newW x1++ )
x0 = (int)(x1 * cosa + y1 * sina + temp1);
y0 = (int)(-x1 * sina + y1 * cosa + temp2);
if((x0 &= 0 && x0 & oldWidth) && (y0 &= 0 && y0 & oldHeight)) & &//这里不能为&=oldWidth或oldHeight
pOldTemp = pBmpData + (oldHeight - 1 - y0) * oldLineByte + x0;
pNewTemp = pNewBmpData + (newHeight - 1 - y1) * newLineByte + x1;
*pNewTemp = *pOldT
* 函数名: writeBmp
* 参 &数: bmpName -- 旋转后的bmp文件名
* 功 &能: 新建一个bmp文件,把旋转后的图像信息存入其中
void writeBmp(char *bmpName)
FILE *fp = fopen(bmpName,&wb&); &//以二进制写方式打开
if(NULL == fp)
cout&&&The file is opened failure&&&
//写入选装后图像信息
fwrite(&bmpFileHeader,sizeof(BITMAPFILEHEADER),1,fp);
fwrite(&bmpInfoHeader,sizeof(BITMAPINFOHEADER),1,fp);
fwrite(pColorTable,sizeof(RGBQUAD),256,fp);
fwrite(pNewBmpData,sizeof(unsigned char),newImgSize,fp);
fclose(fp);
& & & & delete []pColorT
& & & & delete []pNewBmpD
& & & & delete []pBmpD
* 函数名: work
* 参 &数: 无
* 功 &能: 实现处理工作
void work()
char readBmpName[] = &test.bmp&;
if ( !readBmp(readBmpName))
cout&&&The file &&&readBmpName&&&is read failure&&&
cout&&&please input the angle to rotate(Clockwise):&;
rotation(rotAngle);
char writeBmpName[] = &test_new.bmp&;
writeBmp(writeBmpName);
int main()
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。求助高手:VC++6.0图像处理的具体操作步骤方法。像是建立MFC窗口之后怎么操作,程序写在哪等等。谢谢!!_百度知道
求助高手:VC++6.0图像处理的具体操作步骤方法。像是建立MFC窗口之后怎么操作,程序写在哪等等。谢谢!!
!求各位高人耐心指导本人菜鸟一个!十分感谢!
提问者采纳
我以前写过一个文档:
其他类似问题
为您推荐:
其他2条回答
在框架类之上,因为View类是MFC中负责客户区显示的,或者在View类中调用处理显示的程序一般写在View类中
文档视图架构
图像处理的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁基于VC++与Matlab混合编程的图像处理-- 斯科特源码工作室&-- 编程爱好者博客
快捷域名:
摘要VC++MatlabMatlabMatlabVC++VC++Matlab
关键词Matlab VC++
MatlabMathworksMatlabVC++VC++MatlabWindowsMSVC++6.0Matlab6.5
2.两种常规混合编程方式
VC++MatlabMatlabMatlabMatcomMatlabMatcomMatlabMatlabMatlabMatcomMatlabMathworks4.5MatlabMatcomMatlabMatlabMatcomMatlabMatcomMatcom[1]
MathtoolsMATLAB5.3C/C++MATLABC++C/C++C++mwArrayVC++m[3]
C++Matlaba[2][3]={1,2,3,4,5,6};C++a123456Matlaba142536
1)MatlabVC++Matlab
2)MatlabMatlabMatlab
3.两种混合编程新途径
MatMatlabMatlabmat.hmatmatVC++Matlab VC++mat
MatlabMathWorksMatlabMatlabMCC++VC++
1)MatlabMM
2)MatlabMASCIIMMex
3)CC++C/C++
C/C++Matlab C/C++MatlabMatlabMMC/C++ImagesimnoiseC++MCCmcc –h – t –L Cpp myimnois([3][4])*.hpp*.cppmyimnoise.cppmyimnoise.hppVC++VC++
mccMC/C++edge.mMatlab
Matlab mcc
mcc -p 创建C++独立应用程序;
mcc -e 创建C独立应用程序;
mcc -B sgl 创建C独立应用程序(与图形库连接);
mcc -B sglcpp 创建C++独立应用程序(与图形库连接);
mcc -c 产生c/c++码文件,而不生成exe文件(或mex文件);
mcc -h 把被调的助理函数与主函数联同编译;
mcc -w 编译过程中给出提示信息。
4.一个应用混合编程处理天文图像的例子
TV: Total Variation-(1)[5][6]
VC++VC++MATLABVC++
2Matlab 30MCC++VC++2
MatlabVC++VC++MatlabMatlabMMatlabMC++VC++MatcomMatlabVC++
参考文献:
[1] MathTools Ltd.MIDEVA MATCOM & Visual MATCOM user’s guide V4.5 realease [Z].1999
[2] MATLAB C++ Math Library user’s guide V2.0.1999
[3] .Matlab/Sinmulink [Z].:,2002
[4] ,.Matlab[M].:,2002
[5] ,.[J].,2001.9:.
[6] ,.[M].:,2004.
[7] ,.[J].,2003.10:.
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
您需要登录后才能评论,请基于VC++6.0和BMP图像显示24
上亿文档资料,等你来发现
基于VC++6.0和BMP图像显示24
科技信怠;计算机与网络;基孑VC++6.0硇BMP国像显示;河南科技大学;张河新;杨璐珍;要】本文探讨了VC++6.0环境下BMP图像文件;及其意叉,并对DIB的两种形式WindowsDI;[关键词】BMP图像VC++6.0;图像显示DDB位图DIB位图;位图(Bitmap)是Windows环境中最重要;图像都要转化为位图才能在程序中显示;位囹分为设备相关位
科技信怠计算机与网络基孑VC++6.0硇BMP国像显示河南科技大学张河新杨璐珍要】本文探讨了VC++6.0环境下BMP图像文件的显示。首先详细介绍BMP图像文件的两种类型DDB和Dill的各部分组成[摘及其意叉,并对DIB的两种形式WindowsDIB和OS/2DIB加以区男ll,然后利用VC++6.0的MFC库函数对DDB位图的显示加以实现,时DIB位图的显示过程以程序流程图的形式详细说明。[关键词】BMP图像VC++6.0图像显示DDB位图DIB位图位图(Bitmap)是Windows环境中最重要的图像格式,其它格式的图像都要转化为位图才能在程序中显示。对于使用VC++6.0进行图像编程的程序员者来说,掌握了位图的显示就掌握了图像显示的基础。位囹分为设备相关位图(DDB)和设备无关位图(DIB)两种o1.DDB位图DDB是一种内部位图格式,自身没有调色板,它的显示依赖于计算机显示系统内部的调色板,因此它的显示效果因计算机显示系统的不同而不同。1.1BITMAP结构BITMAP结构定义了DDB位图的类型、宽度、颜色格式和像素位值信息,该结构的定义如下:typedefstructtagBlTMAP{intbmType;//指定位图的类型,这个值必须为0intbmWidth;//指定位图的宽度。以像素为单位intbmHeight;//指定位图的高度,以像素为单位intbmWidthBytes;//指定位图中每个扫描行的字节数BYTEbmPlanes;,,指定颜色层数BYTEbmBitsPixel;//指定每个像素所占的位数viodFAR*bmBits;,,存放像素值的内存块的地址JBrrMAP,*PBITMAP1.2DDB位图的显示显示DDB位图的摹本过程为:首先创建一个位图对象,并将该位图对象装人内存;然后创建一个与显示设备上下文相兼容的内存设备上下文(CDC);再将该位图对象选入创建的内存设备上下文,并保存内存设备上下文中原有位图的指针;接着显示位图;最后恢复设备上F文中原有的位图。函数DisplayDDB展示了DDB位图的显示过程。BOOLDisplayDDB(CDC+pDC,LPCSTRlpszBitmap)ICBitmapBitmap,*poldBitmap;BITMAPbmp;CDCdeMemory;if(!Bitmap.IJmdBitmap(1pszBitmap))//加载位图{I'etumFALSE;lif(!deMemory.CreateCompatibleDC(pDC))//创建CDCretnl-nFALSE∥创建CDC失败,,把创建的位图选人CDCpoldBitmap=(CBitmap4)dcMemory.SelectObject(&Bitmap);,/显示位图pDC->BitBh(o,0,bmp.bmWidth,bmp.bmHeight。&deMemory,0,0。SR-ccoPY);//把原始位图选入CDCdcMemory.SelectObject(poldBitmap);returnTRUE;}2.DJB位图DIB位图是设备无关位图,它自带调色板信息,经常存储为以BMP为后缀的图像。DIB分为WindowsDIB和OS/2DIB两种。2.1WindowsDIBWindowsDIB由BITMAPFILEHEADER(位图文件头)、BITMAPIN―FOHEADER(位图信息头)、RGBQUAD(位图颜色表)和位图图像数据四部分组成。位图文件头BITMAPFILEHEADER的定义如下:typedefstructtagMAPFILEHEADER{WORDbtType;指定文件的类型,必须是BM一242一万方数据DWORDbtSize;指定位图文件的大小,以字节为单位WORDbfReservedl;保留位.必须为0WORDbfl}teserved2;保留位,必须为0,DWORDbfOfmits;从BITMAPFILEHEADER结构到位图数据lBITMAPFILEHEADER,FAR}U'BITMA哪LEHEADER,+PBITMAP位图信息头B删AP兀LEHEADER结构的定义如下:typedefstreettagBITMAPINFOHEADER{DWORDbiSize://指定这个结构的大小,以字节为单位LONGbiWidthbiWidth;//指定位图的宽度,以像素为单位LONGbiHeight;//指定位图的高度.以像素为单位WORDbiPlanes;//该值必须为lWORDbiBitCount;//指定每个像素所占的位数DWORDbiCompressiom//指定位图的压缩类型DWORDbiSizelmage;//指定位图数据占用的字节数。biSizelm-LONGbiXPelsPerMeter;//指定位图目标设备的水平分辨率(像LONGbiYPelsPerMeter;,//指定位图目标设备的垂直分辨率(像DWORDhiClrUsed;//指定显示位图所用到的颜色数目,如果这DWORDbiClrlmportant;//指定显示位图所用到的颜色数目,如lBITMAPINFOHEADER,‘PBITMAPINFOHEADER;有的位图显示需要调色板,有的不需要。不需要调色板的位图的typeddstreettagRGBQUAD{BYTErgbBlue;,,指定该颜色的蓝色分量BYTErgbGreen;//指定该颜色的绿色分量BYTErgbRed;//指定该颜色的红色分量BYTEr西Rese“ed;//保留值,必须为0)RGBQUAD;位图信息头和调色板组成了位图信息(BITMAPINFO)结构,typedefstmcttagBITMAPINFOIBnMAPINFOHEADERbmiHeader;RGBQUADblniColors[1];}BITMAPINFO,’PBITMAPINFO;最后一部分是实际图像的数据。对于调用调色板的位图,图像的数2.20s,2DIBOS/2DIB与WindowsDIB数据的存储方式是一样的,只在位囹信DIB中的BITMAPCOREIN-DIB的BITMAPCOREHEADER结构的定义如下:(下转第243页)的偏移量(字节)FILEHEADER;age=biWidth’XbiHeight,其中biWidth’必须是4的整数倍,biWidth’的计算方法为:((hiwidtll)+31)/32*4素,米)素/米)个值为0,需要所有的颜色。果这个值为O,需要所有的颜色。BITMAPINFOHEADER后直接是位图的数据。调色板是一个由bi―CIrU,w1个元素组成的数组(如果biClrUsed=O,则有2的biBitCount次幂个元素)。数组中每个元素都是一个RGBQUAD结构。RGBQUAD结构的定义如下:BITMAPINFO结构的定义如下:据就是该像素在调色板中的索引值,对于真彩色的位图,图像的数据就是实际的R、G、B的值。息结构(信息头和调色板)有所不同。OS/2FO、BITMAPCOREHEADER和RGBTRIPLE分别与WindowsBITMAPINFO、BITMAPINFOHEADER和RGBGUAD相对应。科技信息计算机与网络档案信息电子化的产生及分析大同市财会学校胡秀清近年来,随着我国逐步进入科技时代,计算机的大规模普及应用使档案信息电子化趋势越来越受到了各地区、各级部门的重视。所谓档案信息电子化,就是以馆、室、藏档案资料.纸质或机读形式为主要物质对象。用微机对档案文献进行收集、筛选和不同层次的加工。使之转化成为微机软件形式的二次文献信息供人们利用的过程,档案信息电子化,可使档案信息顺利地与最新技术接轨。适应“信息高速公路”的发展要求,为档案事业的发展注入新的活力。例如:档案信息电子化,信息成果可以轻松的做到多份拷贝.拷贝成果可以报送纠各个部门。扩大了社会影响,拓宽r服务范围;档案信息电子化.日,直接利用机读形式的档案.利用电脑的功能完成信息加工工作程序,改变了传统手年。2、灰尘影响的差异。灰尘对纸张的危害主要是机械磨损纸张和霉菌侵蚀。而对电子文件载体的损坏主要有物理损坏、化学损坏和生物损坏。物理损坏是指划伤磁盘、光盘表面,造成记录信息的损毁;化学损坏是指灰尘中所含的化学成分会不同程度地引起磁盘、光盘载体腐蚀.造成记录信息消失;生物损坏是指霉菌侵蚀会损坏磁性载体和光盘.使数据丢失。综卜所述,灰尘均可以损坏纸张和电子文件载体。对纸张而占,灰尘损害日,通过修复手段在很大程度上恢复其所记录的信息。而灰尘一旦对电子文件载体造成危害,载体上所记录的信息可能会局部丢失。使电子文件失去保存价值。因此.防止灰尘对电子文件载体的危害有特别重要的意义,在电子文件形成和使用过程巾。要采取严密的防灰尘措施。3、技术寿命的差异。纸质文件不存在任何技术过时问题。而电子文件的寿命与技术革新有很大关系。因为电子文件是通过计算机将信息与载体结合在一起而形成的,必须通过计算机才能识读。一旦出现由于技术革新使旧的存储软件技术消失或商业性的原因使电子文件设备找不到配套硬件产品,则载体七的信息就无法读出。+一般说来.大多数电子文件载体的预期寿命都超过r识读它的硬件和软件的技术期限,也就是说,技术过时对电子文件安会性的影响显得更为重要。针对技术过时,最好的办法是将电子文件转换为尽可能中性格式的文档。4、信息保护的差异。电子丈件信息保护与传统纸质文件保护方面还面临一个不可忽视的问题,那就足电脑病毒。电脑病毒是一种程序,它通过修改其它程序,并把自身的拷贝嵌人而实现对其它程序的传染。目前。保护电子文件信息不被修改、盗窃、删除的技术途径主要有防火墙技术.存取权限控制、数据加密法、数字水印法,数字时问印章法等。随着技术的不断发展,只要我们建市牢固的安全意识,养成良好的工作习惯,按期对计算机进行杏毒、杀毒,基本日r以将病毒威胁拒之门外。三、使档案管理向立体化方向发展。以前的档案管理是旱直线状态的,这种平面结构只反映纸质档案的情况,随着电子文件的介入.网络和信息技术的发展,使档案管理在原有平面结构基础卜。又增加r一项档案信息载体内容.就构成三维空『uJ,形成r立体化的管理结构。搞好了这些.就町以方便各个需要查阅档案的部门和个人,实现信息联动。四、档案人员知识结构的变革迫在眉睫。档案人员要适应信息技术和档案事业的发展必须采取积极措施抓好知识更新.引进,消化、适应信息技术的成果,使档案人员拥有广博的知识,以适应信息技术发展的需要,这是档案工作迎接信息技术革命最根本的对策。工信息加工选题―选材一编辑一出版的工作模式,缩短了从文件资料形成到开发的时间,从『而提高了档案信息的应用价值等。目前,我们应该改变大多数基层档案馆、室仅仅将计算机应用于档案著录或文件打字贮存的状况。使现在的劳动电f化,为将来“信息高速公路”中有一束档案信息打F基础。当然,我们还要重视电子化过程中应当解决好的问题。一.做好归档电子文件的技术处理下作,文施电子文件管理战略。新型文件材料的归档势在必行,这就要求档案工作者必须深入到现行文件工作领域.对产生的大量电子文件的接收、处置乃至存储1_作进行指导,保护电子文件的原始信息,了解文件信息重新组合的来龙去脉。也就是说.通过采取技术处理,将已归档的电子文件改为“只读忭”文件,即只能读不能写的不可更改的文件,从而识别和保护电子文件的原始结构,保证电子文件的町靠性,使之与纸质文件一样发挥社会效用。二、解决好电子文件的保存和安伞问题。电子文件中原始信息的长期保存问题是有待档案-[作者进行深入研究和探讨的重要课题,与传统档案保存方式相比,电子信息档案有更多应当注意的问题。l、载体寿命的差异。纸张的耐久性取决于纤维素的性质,在高温、高湿、酸、酶、氧化荆等作用下,可发生水解和氧化反应,只要在档案保护过程中,注意排除发牛两大化学反应所需要的条件,就可以使纸质档案的寿命达到上百年甚至}千年。电子文件的载体材料是磁盘和光盘,而由于技术发展的原因,光盘以存储量大的优势基本取代了磁盘成为主流。光盘是利用激光进行信息存取的,光盘常用的记录介质主要有碲、碲合金、硒、碳铝化合物以及一些在激光热效应作用下易产生物化性质变化的材料。这些材料不稳定、易氧化、易与碱溶液发生反应,寿命一般仅为5一15(上接第242页)typedefstructtagBITMAPCOREHEADER{DWORDWORDWORDWORDbeSi∞;指定这个结构的大小,以字节为单位bcWidth;指定改位图的宽度,以像素为单位bcHeight;指定改位图的高度,以像索为单位bcPlanes;该值必须为lbeBitCount;指定每个像素所需的字节数WORDlBITMAPCOREHEADER,+PBITMAI圯0REHEADEIkRGBTRIPLE结构的定义如下:typedefstruettagItGSTmPLElBYTEBYTEBYTErgbtBhe;,,该颜色的蓝色分鼍rgbtGreen;,,该颜色的蓝色分量rgbtRed;//该颜色的蓝色分量}RGBTRIPLE;BITMAPCOREINFO结构的定义如下:typedefstruct―BITMAPCOREINFOIBITMAPCOREHEADERbmciHeader;,bmciColors[1l;}BITMAPCOREINFO,*PBITMAPCOREINFO;WindowsD|B和0S/2DIB的信息头结构大小不同,可以以此来判断DIB为WindowsDIB或0S/2D1B。2.3屁示DIB位图显示DIB位图和创建D1B位图的调色板的程序流程图如图l、2所示。3.结论显示BMP格式的位图首先要清楚其组成和各组成的具体含义,显示位图时首先要打开要显示的位图的文件.读取位图数据,然后为位图创建调色板.并将创建的调色板选人设备上下文,然后显示位图。位图显示完后在程序结束之前要恢复程序原始调色板。RGBTRIPLE图1显示DIB位图程序流程图图2创建调色板程序流程图参考文献[1]周长发,精通visIlalc++图像处理编程.电子工业出版社,2006.6[2]乖qg,马天予.VisualC++图像处理.人民邮电出版社.2002.12【3]潘爱民。=x-I|1印.Visualc++技术内幕清华大学出版社,2009.4[4]陈兵旗,孙明.Visualc++使用图形处理.清华大学出版社,20043[5]高伟卫.杨胜强.基于VC基础类库的图像显示.机械管理开发,2005(6),84―87’一243―万方数据基于VC++6.0和BMP图像显示作者:作者单位:刊名:英文刊名:年,卷(期):张河新, 杨璐珍河南科技大学科技信息SCIENCE & TECHNOLOGY INFORMATION2010(32) 参考文献(5条) 1.高伟卫;杨胜强 基于VC基础类序的图像显示 .陈兵旗;孙明 Visual C++使用图形处理 20043.藩爱民;王国印 Visual C++技术内幕 20094.何斌;马天予 VisualC++图像处理 20025.周长发 精通VsualC++图像处理编程 2006 本文链接:http://d..cn/Periodical_kjxx.aspx包含各类专业文献、幼儿教育、小学教育、应用写作文书、中学教育、高等教育、各类资格考试、基于VC++6.0和BMP图像显示24等内容。
 会使用 VC++读取图像数据并显示。 二.实验内容: 1.在 VC6.0 环境下,生成 MFC 应用程序框架。 2.在已生成的应用程序中,加 BMP 位图读取与显示的代码,从已有...  打开 VC++6.0, 单击 文件 【files】 →新建 【new】 →工程 【projects】 ...&图片打开对话框&; fileDlg.m_ofn.lpstrFilter=&BMP Files(*.bmp)\0*.bmp...  实验一、 实验一、VC6.0 下 bmp 位图的读取与显示一、 实验目的 实验目的: 1、 掌握 windows BMP 格式位图文件的基本格式。 2、 会使用 VC++读取图像数据并...  VC环境下读取显示.bmp图像方法_计算机软件及应用_IT/计算机_专业资料。总结显示 ...基于VC++的BMP图像点运算... 9页 3下载券 基于VC++6.0的BMP图像显... 暂...  VC6.0下bmp位图的读取与显示_计算机软件及应用_IT/计算机_专业资料。昆明理工大学(数字图像处理)实验报告实验名称: 专学 VC6.0 下 bmp 位图的读取与显示 业: ...  24位bmp图像的打开和显示_IT/计算机_专业资料。24位bmp图像的打开和显示怎样用 VC++实现对24位 bmp 图像的打开和显示(bmp 图片假定放在 D 盘 picture 文件夹内...  使用PictueControl显示BMP图片,VC6.0通过调试使用PictueControl显示BMP图片,VC6.0通过调试隐藏&& CB bitmap.LoadBitmap(IDB_CTYPE_REPAIR); //HBITMAP h...  VS2010 C++学习(3) :BMP 图像文件的特效显示 学习 VC++编制的 BMP 图像文件的特效显示程序.。一、 1. 2. 3. 4. 5. 6. 7. 8. 9. 主要内容: 面向...  开发工具:vc++6.0,Win32 控制台程序 [cpp] /** * 程序名: WorkBmp.cpp * 功能: 读取和显示 24 位 BMP 图像,并把图像数据输入到 ImageData.txt 中 * ...

我要回帖

更多关于 vc6.0 sdk编程 的文章

 

随机推荐