// ID_CXIMAGE_MIRROR

文件:CxImage\demo\demoDoc.cpp

菜单项:cximage-》Mirror

ON_COMMAND(ID_CXIMAGE_MIRROR, OnCximageMirror)

  

void CDemoDoc::OnCximageMirror()
{
m_MenuCommand=ID_CXIMAGE_MIRROR;
hThread=(HANDLE)_beginthread(RunCxImageThread,0,this);
}

  

//_beginthread,VC/VC++函数,创建一个线程。
//链接: https://baike.baidu.com/item/beginthread/4230822?fr=aladdin

  

void /*unsigned long _stdcall*/ RunCxImageThread(void *lpParam)
{
CDemoDoc *pDoc = (CDemoDoc *)lpParam;
switch (pDoc->m_MenuCommand)
{
status = pDoc->image->Mirror(); // doc->image = newImage;当前的图像 }
}

  

// CxImage\CxImage\ximatran.cpp
bool CxImage::Mirror(bool bMirrorSelection, bool bMirrorAlpha)
{
if (!pDib) return false;// void* pDib; //包含文件头,调色板等等 }
bool CxImage::LoadResource(HRSRC hRes, DWORD imagetype, HMODULE hModule)
{
DWORD rsize=SizeofResource(hModule,hRes);
HGLOBAL hMem=::LoadResource(hModule,hRes);
// LockResource是指锁定资源并得到资源在内存中的第一个字节的指针。
char* lpVoid=(char*)LockResource(hMem);
CxMemFile fTmp((BYTE*)lpVoid,rsize);
return Decode(&fTmp,imagetype);
{
if (imagetype==CXIMAGE_FORMAT_JPG){
CxImageJPG newima;
{
// 构造函数
CxImageJPG::CxImageJPG(): CxImage(CXIMAGE_FORMAT_JPG)
{
#if CXIMAGEJPG_SUPPORT_EXIF
m_exif = NULL;
memset(&m_exifinfo, 0, sizeof(EXIFINFO));
#endif
}
}
newima.CopyInfo(*this); // <ignacio>
{
if (pDib==NULL) memcpy(&info,&src.info,sizeof(CXIMAGEINFO));
/*
typedef struct tagCxImageInfo {
DWORD dwEffWidth; //双字节对齐宽度
BYTE* pImage; //图像数据
void* pGhost; //如果这是一个备份(ghost),
//则pGhost指向它的原始对象
DWORD dwType; //原始图像格式
char szLastError[256]; //调试信息,最后的错误信息
long nProgress; //进度
long nEscape; //取消
long nBkgndIndex; //GIF, PNG, MNG使用
RGBQUAD nBkgndColor; //RGB透明使用
BYTE nQuality; //JPEG使用
long nFrame; //TIF, GIF, MNG使用,表示当前活动帧
long nNumFrames; //TIF, GIF, MNG使用,表示总帧数
DWORD dwFrameDelay; //GIF, MNG使用,表示帧的延迟
long xDPI; //水平分辨率
long yDPI; //垂直分辨率
RECT rSelectionBox; //对象的外包围框
BYTE nAlphaMax; //最大透明度
bool bAlphaPaletteEnabled; //如果调色板中的alpha值是启用的,
//则这个变量为true
bool bEnabled; //启用绘制函数
long xOffset;
long yOffset;
DWORD dwEncodeOption; //GIF, TIF使用:
// 0=def.1=unc,2=fax3,3=fax4,
// 4=pack,5=jpg
RGBQUAD last_c; //用于优化GetNearestIndex
BYTE last_c_index;
bool last_c_isvalid;
long nNumLayers;
DWORD dwFlags;
} CXIMAGEINFO;
*/
}
if (newima.Decode(hFile)){// CxImage\CxImage\ximajpg.cpp
Transfer(newima);// newima 作为临时变量传递this
return true;
} else {
strcpy(info.szLastError,newima.GetLastError());
return false;
}
}
}
}
newima.Decode(hFile)
{
is_exif = DecodeExif(hFile);//= CxMemFile fTmp
{
m_exif = new CxExifInfo(&m_exifinfo); // 此时,什么都没有 CxImage\CxImage\ximaexif.cpp }
// 获取文件头
Create(cinfo.output_width, cinfo.output_height, 8*cinfo.output_components, CXIMAGE_FORMAT_JPG); }

  

最新文章

  1. C语言 &#183; 矩阵乘法 &#183; 算法训练
  2. POJ 题目1141 Brackets Sequence(区间DP记录路径)
  3. php中ajax调用出错的问题
  4. Docker跨主机通信之路由
  5. Hibernate中的PO
  6. 安装node_modules文件遇到的问题:更改代理
  7. 转:C语言宏定义时#(井号)和##(双井号)的用法
  8. ALV 插入可编辑的空行
  9. nmon for linux
  10. 如何用Github的gh-pages分支展示自己的项目
  11. 几项有用的JQUERY代码
  12. 1081: [SCOI2005]超级格雷码
  13. JSON的服务器开发之路
  14. Python中dunder名称的来历
  15. 指定的参数已超出有效值的范围。参数名:sit ,先仔细看看错误和我的一样不一样
  16. [spring源码] 小白级别的源码解析ioc(二)
  17. 从Redis生成数据表主键标识
  18. 恭喜&quot;微微软&quot;喜当爹,Github嫁入豪门。
  19. jvm系列六、windows用jdk自带工具jps、jstack找出性能最差的代码
  20. linux环境中安装ftp服务

热门文章

  1. python基础-常用内置包
  2. 网络基础与osi七层与TCP/IP协议
  3. salesforce零基础学习(一百二十三)Transaction Security 浅入浅出
  4. 【FAQ】在华为鸿蒙车机上集成华为帐号的常见问题总结
  5. 1、debug调试
  6. 【Python】pip的镜像安装异常解决方案
  7. 万字干货! 使用docker部署jenkins和gitlab
  8. BOM、DOM、两者查找标签的方式和操作标签的方式、操作class和css的方法、事件、jQuery类库
  9. Atcoder dp I Coins 题解
  10. 腾讯出品小程序自动化测试框架【Minium】系列(二)项目配置及测试套件使用说明