如何创建一副多页的TIFF CxImage *pimage[3]; pimage[0]=&image1; pimage[1]=&image2; pimage[2]=&image3; FILE* hFile; hFile = fopen("multipage.tif","w+b"); CxImageTIF multiimage; multiimage.Encode(hFile,pimage,3); fclose(hFile); 或者 FILE* hFile; hFile = fopen("c:\\multi.tif","w+b"); CxImageTIF image; image.Load("c:\\1.tif",CXIMAGE_FORMAT_TIF); image.Encode(hFile,true); image.Load("c:\\2.bmp",CXIMAGE_FORMAT_BMP); image.Encode(hFile,true); image.Load("c:\\3.png",CXIMAGE_FORMAT_PNG); image.Encode(hFile); fclose(hFile); 如何复制和粘贴图像 //复制(copy) HANDLE hDIB = image->CopyToHandle(); if (::OpenClipboard(AfxGetApp()->m_pMainWnd->GetSafeHwnd())) { if(::EmptyClipboard()) { if (::SetClipboardData(CF_DIB,hDIB) == NULL ) { AfxMessageBox( "Unable to set Clipboard data" ); } } } CloseClipboard(); //粘贴(paste) HANDLE hBitmap=NULL; CxImage *newima = new CxImage(); if (OpenClipboard()) hBitmap=GetClipboardData(CF_DIB); if (hBitmap) newima->CreateFromHANDLE(hBitmap); CloseClipboard(); 如何在图片框控件(Picture Box)中显示图像 HBITMAP m_bitmap = NULL; CxImage image("myfile.png", CXIMAGE_FORMAT_PNG); ... CDC* hdc = m_picture.GetDC(); HBITMAP m_bitmap = image.MakeBitmap(hdc->m_hDC); HBITMAP hOldBmp = m_picture.SetBitmap(m_bitmap); if (hOldBmp) DeleteObject(hOldBmp); if (hdc->m_hDC) m_picture.ReleaseDC(hdc); ... if (m_bitmap) DeleteObject(m_bitmap); 译后序: 关于图像处理库,我相信大家有一个共同的疑问:这么多图像处理库,我该如何选择?在CSDN的blog中有这样一段文字,比较透彻地回答了这个问题,感谢作者的透彻解释: "CxImage类库是一 个优秀的图像操作类库。它可以快捷地存取、显示、转换各种图像。有的读者可能说,有那么多优秀的图形库,如OpenIL,FreeImage, PaintLib等等,它们可谓是功能强大,齐全,没必要用其它的类库。但我要说,这些类库基本上没有免费的,使用这些类库,你要被这样那样的许可协议所 束缚。 在这点上,CxImage类库是完全免费的。另外,在使用上述类库时,你会遇到重重麻烦。因为它们大部分是平台无关的,且用C语言写成,有的还夹杂 着基本的C++ wrapper和成堆德编译选项的声明需要你去处理。而CxImage类库在这方面做得很好。还有让我最看好的,就是作者完全公开了源代码。相对于那些封 装好的图形库和GDI+来说,这一点使我们可以进一步学习各种编解码技术,而不再浮于各种技术的表面。" |