demo.cpp
来自「君正早期ucos系统(只有早期的才不没有打包成库),MPLAYER,文件系统,图」· C++ 代码 · 共 767 行 · 第 1/2 页
CPP
767 行
str += (TCHAR)NULL;
str += doctypes[i].ext;
str += (TCHAR)NULL;
}
}
return str;
}
//////////////////////////////////////////////////////////////////////////////
// CDemoApp commands
void CDemoApp::OnImageFromBitmap()
{
/* HBITMAP bitmap;
if (!(bitmap = ::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1)))){
AfxMessageBox("Could not load bitmap from resource");
return;
}*/
CxImage* newImage = new CxImage();
if (!newImage->LoadResource(FindResource(NULL,MAKEINTRESOURCE(IDB_BITMAP1),RT_BITMAP),CXIMAGE_FORMAT_BMP)){
AfxMessageBox(newImage->GetLastError());
delete newImage;
newImage =NULL;
return;
}
CDemoDoc *doc = (CDemoDoc *)demoTemplate->OpenDocumentFile(NULL);
if (doc){
doc->image = newImage;
CString s;
s.Format("BITMAP Resource Image %d",m_nDocCount++);
doc->SetTitle(s);
doc->UpdateAllViews(0);
doc->UpdateStatusBar();
}
}
//////////////////////////////////////////////////////////////////////////////
void CDemoApp::OnCximageLoadjpegresource()
{
CxImage* newImage = new CxImage();
if (!newImage->LoadResource(FindResource(NULL,"IDR_JPG2","JPG"),CXIMAGE_FORMAT_JPG)){
AfxMessageBox(newImage->GetLastError());
delete newImage;
newImage =NULL;
return;
}
CDemoDoc *doc = (CDemoDoc *)demoTemplate->OpenDocumentFile(NULL);
if (doc){
doc->image = newImage;
CString s;
s.Format("JPEG Resource Image %d",m_nDocCount++);
doc->SetTitle(s);
doc->UpdateAllViews(0);
doc->UpdateStatusBar();
}
}
//////////////////////////////////////////////////////////////////////////////
void CDemoApp::OnCximageLoadiconresource()
{
CxImage* newImage = new CxImage();
if (!newImage->LoadResource(FindResource(NULL,MAKEINTRESOURCE(IDR_ICO1),"ICO"),CXIMAGE_FORMAT_ICO)){
AfxMessageBox(newImage->GetLastError());
delete newImage;
newImage =NULL;
return;
}
// HICON my_Icon = (HICON)::LoadImage(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_G),IMAGE_ICON,0, 0, 0);
// CxImage my_image;
// my_image.CreateFromHICON(my_Icon);
// DestroyIcon(my_Icon);
CDemoDoc *doc = (CDemoDoc *)demoTemplate->OpenDocumentFile(NULL);
if (doc){
doc->image = newImage;
CString s;
s.Format("Icon Resource Image %d",m_nDocCount++);
doc->SetTitle(s);
doc->UpdateAllViews(0);
doc->UpdateStatusBar();
}
}
//////////////////////////////////////////////////////////////////////////////
void CDemoApp::OnCximageLoadgifresource()
{
CxImage* newImage = new CxImage();
if (!newImage->LoadResource(FindResource(NULL,MAKEINTRESOURCE(IDR_GIF1),"GIF"),CXIMAGE_FORMAT_GIF)){
AfxMessageBox(newImage->GetLastError());
delete newImage;
newImage =NULL;
return;
}
CDemoDoc *doc = (CDemoDoc *)demoTemplate->OpenDocumentFile(NULL);
if (doc){
doc->image = newImage;
CString s;
s.Format("GIF Resource Image %d",m_nDocCount++);
doc->SetTitle(s);
doc->UpdateAllViews(0);
doc->UpdateStatusBar();
}
}
//////////////////////////////////////////////////////////////////////////////
void CDemoApp::OnCximageLoadpngresource()
{
CxImage* newImage = new CxImage();
if (!newImage->LoadResource(FindResource(NULL,MAKEINTRESOURCE(IDR_PNG1),"PNG"),CXIMAGE_FORMAT_PNG)){
AfxMessageBox(newImage->GetLastError());
delete newImage;
newImage =NULL;
return;
}
CDemoDoc *doc = (CDemoDoc *)demoTemplate->OpenDocumentFile(NULL);
if (doc){
doc->image = newImage;
CString s;
s.Format("PNG Resource Image %d",m_nDocCount++);
doc->SetTitle(s);
doc->UpdateAllViews(0);
doc->UpdateStatusBar();
}
}
//////////////////////////////////////////////////////////////////////////////
void CDemoApp::OnCximageLoadtifresource()
{
CxImage* newImage = new CxImage();
if (!newImage->LoadResource(FindResource(NULL,MAKEINTRESOURCE(IDR_TIF1),"TIF"),CXIMAGE_FORMAT_TIF)){
AfxMessageBox(newImage->GetLastError());
delete newImage;
newImage =NULL;
return;
}
CDemoDoc *doc = (CDemoDoc *)demoTemplate->OpenDocumentFile(NULL);
if (doc){
doc->image = newImage;
CString s;
s.Format("TIF Resource Image %d",m_nDocCount++);
doc->SetTitle(s);
doc->UpdateAllViews(0);
doc->UpdateStatusBar();
}
}
//////////////////////////////////////////////////////////////////////////////
void CDemoApp::OnWindowCloseall()
{
POSITION pos = AfxGetApp()->GetFirstDocTemplatePosition();
while(pos) {
CDocTemplate* pTemplate = AfxGetApp()->GetNextDocTemplate(pos);
POSITION pos2 = pTemplate->GetFirstDocPosition();
while(pos2) {
CDocument* pDocument;
if ((pDocument=pTemplate->GetNextDoc(pos2)) != NULL)
pDocument->OnCloseDocument();
}
}
}
//////////////////////////////////////////////////////////////////////////////
void CDemoApp::OnCximageDemosavemultipagetiff()
{
CxImage* newImage1 = new CxImage();
if (!newImage1->LoadResource(FindResource(NULL,MAKEINTRESOURCE(IDR_TIF1),"TIF"),CXIMAGE_FORMAT_TIF)){
AfxMessageBox(newImage1->GetLastError());
delete newImage1;
newImage1 =NULL;
}
CxImage* newImage2 = new CxImage();
if (!newImage2->LoadResource(FindResource(NULL,MAKEINTRESOURCE(IDR_GIF1),"GIF"),CXIMAGE_FORMAT_GIF)){
AfxMessageBox(newImage2->GetLastError());
delete newImage2;
newImage2 =NULL;
}
CxImage* newImage3 = new CxImage();
if (!newImage3->LoadResource(FindResource(NULL,"IDR_JPG2","JPG"),CXIMAGE_FORMAT_JPG)){
AfxMessageBox(newImage3->GetLastError());
delete newImage3;
newImage3 =NULL;
}
newImage3->DecreaseBpp(8,true);
CxImage *pimage[3];
pimage[0]=newImage1;
pimage[1]=newImage2;
pimage[2]=newImage3;
FILE* hFile;
hFile = fopen("multipage.tif","w+b");
CxImage multiimage;
multiimage.Encode(hFile,pimage,3,CXIMAGE_FORMAT_TIF);
fclose(hFile);
delete newImage1;
delete newImage2;
delete newImage3;
/*{
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);
}*/
AfxMessageBox("file ""mulipage.tif"" saved to disk",MB_OK);
}
//////////////////////////////////////////////////////////////////////////////
void CDemoApp::OnCximageDemosaveanimatedgif()
{
CxImage* newImage = new CxImage();
if (!newImage->LoadResource(FindResource(NULL,MAKEINTRESOURCE(IDR_GIF1),"GIF"),CXIMAGE_FORMAT_GIF)){
AfxMessageBox(newImage->GetLastError());
delete newImage;
newImage =NULL;
}
newImage->IncreaseBpp(24);
CxImage ima1,ima2,ima3;
ima1.Copy(*newImage);
ima1.Light(22);
ima2.Copy(*newImage);
ima2.Light(44);
ima3.Copy(*newImage);
ima3.Light(66);
newImage->DecreaseBpp(8,0,0);
ima1.DecreaseBpp(8,0,0);
ima2.DecreaseBpp(8,0,0);
ima3.DecreaseBpp(8,0,0);
newImage->SetTransIndex(newImage->GetPixelIndex(0,0));
ima1.SetTransIndex(ima1.GetPixelIndex(0,0));
ima2.SetTransIndex(ima2.GetPixelIndex(0,0));
ima3.SetTransIndex(ima3.GetPixelIndex(0,0));
newImage->SetFrameDelay(22);
ima1.SetFrameDelay(22);
ima2.SetFrameDelay(22);
ima3.SetFrameDelay(44);
CxImage *pimage[7];
pimage[0]=newImage;
pimage[1]=&ima1;
pimage[2]=&ima2;
pimage[3]=&ima3;
pimage[4]=&ima2;
pimage[5]=&ima1;
pimage[6]=newImage;
FILE* hFile;
hFile = fopen("ani.gif","wb");
CxImageGIF multiimage;
multiimage.SetComment("CxImage demo");
multiimage.SetLoops(3);
multiimage.SetDisposalMethod(2);
multiimage.Encode(hFile,pimage,7);
fclose(hFile);
delete newImage;
AfxMessageBox("file ""ani.gif"" saved to disk",MB_OK);
}
//////////////////////////////////////////////////////////////////////////////
void CDemoApp::OnCximageDownloadfromurl()
{
DlgURL dlg;
if (dlg.DoModal()==IDOK){
long size = dlg.m_size;
if (size){
CxMemFile memfile((BYTE*)dlg.m_data.GetBuffer(0),size);
CDemoDoc *doc = (CDemoDoc *)demoTemplate->OpenDocumentFile(NULL);
if (doc){
CString ext(doc->FindExtension(dlg.m_url));
ext.MakeLower();
if (ext == "") return;
int type = doc->FindType(ext);
CxImage* ima = new CxImage();
ima->Decode(&memfile,type);
doc->image = ima;
doc->SetTitle(dlg.m_url);
doc->UpdateAllViews(0);
doc->UpdateStatusBar();
if (ima->GetNumFrames()>1){
CString s;
s.Format("File with %d images. Read all?",ima->GetNumFrames());
if (AfxMessageBox(s,MB_OKCANCEL)==IDOK){
int j; // points to the document name
for(j=strlen(dlg.m_url)-1;j>=0;j--){
if (dlg.m_url[j]=='\\'){ j++; break; }
}
// create the documents for the other images
for(int i=1;i<ima->GetNumFrames();i++){
CDemoDoc *NewDoc=(CDemoDoc*)((CDemoApp*)AfxGetApp())->demoTemplate->OpenDocumentFile(NULL);
if (NewDoc) {
CxImage *newImage = new CxImage();
newImage->SetFrame(i);
memfile.Seek(0,SEEK_SET);
newImage->Decode(&memfile,type);
NewDoc->image = newImage;
CString s;
s.Format("%s (%d)",dlg.m_url.Mid(j),i+1);
NewDoc->SetTitle(s);
NewDoc->UpdateAllViews(NULL,WM_USER_NEWIMAGE);
}
}
}
}
}
}
}
}
//////////////////////////////////////////////////////////////////////////////
void CDemoApp::OnCximageDemocreatefromarray()
{
CxImage* newImage = new CxImage();
long w = 256;
long h = 256;
BYTE c = 4;
BYTE* pArray = (BYTE*)malloc(w*h*c);
int n,d,e;
int a=w/2;
for(int i = 0; i < h; i++) {
for(int j = 0; j < w; j++) {
n=c*(j+w*i);
d=(BYTE)((a*i)/h+(a*(w-j))/w);
e=(BYTE)((a*(h-i))/h+(a*(w-j))/w);
if (c==4) pArray[n+3]=(BYTE)(d);
pArray[n+2]=(BYTE)(e);
pArray[n+1]=(BYTE)(255-d);
pArray[n]=(BYTE)(255-e);
}
}
newImage->CreateFromArray(pArray,w,h,8*c,c*w,0);
free(pArray);
if (!newImage->IsValid()){
AfxMessageBox(newImage->GetLastError());
delete newImage;
newImage =NULL;
return;
}
CDemoDoc *doc = (CDemoDoc *)demoTemplate->OpenDocumentFile(NULL);
if (doc){
doc->image = newImage;
CString s;
s.Format("CreateFromArray Image %d",m_nDocCount++);
doc->SetTitle(s);
doc->UpdateAllViews(0);
doc->UpdateStatusBar();
}
}
//////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?