本文整理汇总了C++中CImage::Clone方法的典型用法代码示例。如果您正苦于以下问题:C++ CImage::Clone方法的具体用法?C++ CImage::Clone怎么用?C++ CImage::Clone使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CImage
的用法示例。
在下文中一共展示了CImage::Clone方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: InitInstance
//
// 函数: InitInstance(HINSTANCE, int)
//
// 目的: 保存实例句柄并创建主窗口
//
// 注释:
//
// 在此函数中,我们在全局变量中保存实例句柄并
// 创建和显示主程序窗口。
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;
hInst = hInstance; // 将实例句柄存储在全局变量中
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
if (!hWnd)
{
return FALSE;
}
// 打开资源
BYTE* buff = NULL; DWORD size = 0;
HGLOBAL hres = CResGetter::GetBinary(IDB_BMP1, _T("BMP"), buff, size);
// 打开文件并获取解码器
CMemFile file(buff, size); CGC gc;
ICoderObject* coder = CImgAnalyzer::GetCoder(&file, &gc);
// 解码文件
imgOrig = coder->Decode();
imgShow = imgOrig.Clone();
// 关闭资源
CResGetter::ReleaseBinary(hres);
// 允许拖放
DragAcceptFiles(hWnd, TRUE);
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
示例2: OpenFile
BOOL OpenFile(HWND hWnd, CString& sPath)
{
if (sPath.Empty()) return FALSE;
// 打开文件并获取解码器
CIOFile file(sPath); CGC gc;
ICoderObject* coder = CImgAnalyzer::GetCoder(&file, &gc);
if (!coder) return FALSE;
// 解码文件
imgOrig = coder->Decode();
imgShow = imgOrig.Clone();
return TRUE;
}
示例3: WndProc
//
// 函数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
// 目的: 处理主窗口的消息。
//
// WM_COMMAND - 处理应用程序菜单
// WM_PAINT - 绘制主窗口
// WM_DESTROY - 发送退出消息并返回
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// 分析菜单选择:
switch (wmId)
{
// 文件
case IDM_OPEN:
{
CString ret;
CSysDialog::FileDialog(ret, TRUE, NULL, NULL,
_T("图片文件(*.bmp;*.jpg;*.png;*.ico)\0*.bmp;*.jpg;*.png;*.ico\0所有文件(*.*)\0*.*\0"));
OpenFile(hWnd, ret);
// 刷新窗口
Invalidate(hWnd);
}
break;
case IDM_SAVE:
if (imgShow)
{
CString ret; DWORD inx = 0;
CSysDialog::FileDialog(ret, FALSE, NULL, NULL,
_T("BMP文件(*.bmp)\0*.bmp\0JPG文件(*.jpg)\0*.jpg\0PNG文件(*.png)\0*.png\0ICO文件(*.ico)\0*.ico\0"), &inx);
SaveFile(inx, ret);
}
break;
// 原图
case IDM_ORI:
if (imgOrig)
{
imgShow = imgOrig.Clone();
// 刷新窗口
Invalidate(hWnd);
}
break;
// 形变
case IDM_PLG:
if (imgShow)
{
CPoint var[2] =
{
CPoint(500, 200),
CPoint(600, 400)
};
image_t tmp = CImgDeformer::PlgDeform(imgShow, var);
if(!tmp) break;
imgShow = tmp;
// 刷新窗口
Invalidate(hWnd);
}
break;
case IDM_WHL:
if (imgShow)
{
image_t tmp = CImgDeformer::WhlDeform(imgShow, -45);
if(!tmp) break;
imgShow = tmp;
// 刷新窗口
Invalidate(hWnd);
}
break;
case IDM_ZOM:
if (imgShow)
{
CImage bmp_img(imgShow);
image_t tmp = CImgDeformer::ZomDeform(imgShow, (LONG)(bmp_img.GetWidth() * -1.2), (LONG)(bmp_img.GetHeight() * 1.5));
if(!tmp) break;
imgShow = tmp;
// 刷新窗口
Invalidate(hWnd);
}
break;
// 渲染
case IDM_GRAY:
Filter(hWnd, &CFilterGray());
break;
case IDM_INVE:
Filter(hWnd, &CFilterInverse());
break;
case IDM_RELI:
{
timeBeginPeriod(1);
//.........这里部分代码省略.........