搞个 cximage702_full导入VS2010编译后
1.把所有.lib文件和.dll文件拷贝到 新项目的CXIMAGE文件夹里
2.在新项目的stdfx.h或所需要的文件里输入以下引用
#include "CXIMAGE/ximage.h"
//#pragma comment(lib, "CXIMAGE/cximaged.lib")
//#pragma comment(lib, "CXIMAGE/cximagecrtd.lib")//在静态链接库中使用
#pragma comment(lib, "CXIMAGE/cximage.lib")
#pragma comment(lib, "CXIMAGE/png.lib")
#pragma comment(lib, "CXIMAGE/jpeg.lib")
#pragma comment(lib, "CXIMAGE/zlib.lib")
#pragma comment(lib, "CXIMAGE/tiff.lib")
#pragma comment(lib, "CXIMAGE/jbig.lib")
#pragma comment(lib, "CXIMAGE/jasper.lib")
#pragma comment(lib, "CXIMAGE/mng.lib")
#pragma comment(lib, "CXIMAGE/libdcr.lib")
#pragma comment(lib, "CXIMAGE/libpsd.lib")
3.如果用静态链接库编译或者生成带界面的MFCDLL 运行模式需要"release",
在引用时将MFCDLL生成的DLL和CXIMAGE/cximagecrtd.dll,CXIMAGE/cximaged.dll拷贝到目标工程目录中,
typedef void (*lpFun)(void);
HINSTANCE hDll; //DLL句柄
lpFun pShowDlg;
hDll = LoadLibrary(L"RegularDLL.dll");
if (NULL==hDll)
{
return ;
}
pShowDlg = (lpFun)GetProcAddress(hDll,"ShowDlg");
if (NULL==pShowDlg)
{
return ;
}
pShowDlg();
FreeLibrary(hDll);
4.测试代码
CxImage image;
CRect m_rect;
HBITMAP m_bitmap;
#define xishu 0.8
void CkkkDlg::OnBnClickedOk()
{
GetWindowRect(&m_rect);//GetWindowRect(&m_rect); //获得控件客户窗口大小
image.Load(L"test00111.jpeg", CXIMAGE_FORMAT_JPG);
if (image.IsValid())
{
//if (m_bitmap) DeleteObject(m_bitmap);
image.Resample(m_rect.Width()*xishu, m_rect.Height()*xishu); //按照Picture控件的大小,(不按比例)缩放原始图片
m_bitmap = image.MakeBitmap(m_picture.GetDC()->m_hDC);
m_picture.SetBitmap(m_bitmap);
//HBITMAP OldBitmap = m_picture.SetBitmap(m_bitmap);
//if (OldBitmap) DeleteObject(OldBitmap);
}
}
void CkkkDlg::OnBnClickedButton2()//jpeg图片拼接
{
CxImage t_img1,t_img2,t_img3;
int t_h1,t_w1,t_h2,t_w2,t_h3,t_w3,t_bpp;
t_img1.Load(L"test00222.jpeg");
t_img2.Load(L"test00111.jpeg");
t_h1=t_img1.GetHeight();
t_w1=t_img1.GetWidth();
t_h2=t_img2.GetHeight();
t_w2=t_img2.GetWidth();
t_h3=t_h1;
t_w3=t_w1+t_w2;
t_bpp=t_img1.GetBpp();
t_img3.Create(t_w3,t_h3,t_bpp);
t_img3.MixFrom(t_img1,0,0);
t_img3.MixFrom(t_img2,t_w1,0);
t_img3.Save(L"3.jpeg",CXIMAGE_FORMAT_JPG);
}
void CkkkDlg::zoom(float zoom)
{
int left = m_rect.Width()*xishu*zoom-m_rect.Width()*xishu;
int top = m_rect.Height()*xishu*zoom-m_rect.Height()*xishu;
HDC hdc = m_picture.GetDC()->m_hDC;
SetStretchBltMode(m_picture.GetDC()->m_hDC,HALFTONE);
SetStretchBltMode(hdc,HALFTONE);
StretchBlt(hdc,0,0,m_rect.Width()*xishu,m_rect.Height()*xishu,m_picture.GetDC()->m_hDC,left,top,m_rect.Width()*xishu-2*left, m_rect.Height()*xishu-2*top,SRCCOPY);
必须是缩放啊
}
void CkkkDlg::OnBnClickedButton1()//缩小
{
zoom(1.1);
}
void CkkkDlg::OnBnClickedButton3()//放大
{
zoom(0.9);
}
void CkkkDlg::dbclick() //双击鼠标点为中心zoomin
{
CRect rectL,rectR;
CPoint point;
GetCursorPos( &point );
GetDlgItem(IDC_STATIC2)->GetWindowRect(&rectL);//获取控件相对于屏幕的位置
if(rectL.PtInRect(point))
{
/*CString strPos;
strPos.Format(L"%d:%d", point.x, point.y);
AfxMessageBox(strPos);*/
//ScreenToClient(rectL);//转化为对话框上的相对位置
int rx,rwith,ry,rheight,halfWith,halfHeight;
halfWith = rectL.right-rectL.left;
halfHeight = rectL.bottom-rectL.top;
/*if(point.x < (rectL.right-rectL.left)/2)
{
rx = rectL.left;
rwith = (point.x-rectL.left)*2;
}
else
{
rx = rectL.right - (rectL.right-point.x)*2;
rwith = (rectL.right-point.x)*2;
}
if(point.y < (rectL.bottom-rectL.top)/2)
{
ry = rectL.top;
rheight = (point.y-rectL.top)*2;
}
else{
ry = rectL.bottom - (rectL.bottom-point.y)*2;
rheight = (rectL.bottom-point.y)*2;
}*/
if(point.x < (rectL.right-rectL.left)/2+rectL.left)
{
rx = 0;
rwith = m_rect.Width()*xishu-(halfWith-(point.x-rectL.left)*2);
}
else
{
rx = halfWith-(rectL.right-point.x)*2;
rwith = m_rect.Width()*xishu-(halfWith-(rectL.right-point.x)*2);
}
if(point.y < (rectL.bottom-rectL.top)/2+rectL.top)
{
ry = 0;
rheight = m_rect.Height()*xishu-(halfHeight-(point.y-rectL.top)*2);
}
else{
ry = halfHeight-(rectL.bottom-point.y)*2;
rheight = m_rect.Height()*xishu-(halfHeight-(rectL.bottom-point.y)*2);
}
HDC hdc = m_picture.GetDC()->m_hDC;
SetStretchBltMode(m_picture.GetDC()->m_hDC,HALFTONE);
SetStretchBltMode(hdc,HALFTONE);
StretchBlt(hdc,0,0,m_rect.Width()*xishu,m_rect.Height()*xishu,m_picture.GetDC()->m_hDC,rx,ry,rwith, rheight,SRCCOPY);
}
}