91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 6KB
    文件類型: .rar
    金幣: 2
    下載: 1 次
    發(fā)布日期: 2021-05-22
  • 語言: 其他
  • 標(biāo)簽: 縮放視圖??

資源簡介

在CZoomView類的基礎(chǔ)上加入了一些實(shí)用的功能:如視圖拖動(dòng)、縮放、滾動(dòng)、復(fù)制視圖等功能,并將注釋改成中文,以便大家學(xué)習(xí)參考。

資源截圖

代碼片段和文件信息

#include?“StdAfx.h“
#include?“ZoomView.h“
#include?“resource.h“

#ifdef?_DEBUG
#undef?THIS_FILE
static?char?baseD_CODE?THIS_FILE[]?=?__FILE__;
#endif


#define?MAXZOOMIN?4?//最大縮放比例因子
#define?PICKMARGIN?10?//點(diǎn)縮放與矩形縮放鼠標(biāo)拾取的界限值

BEGIN_MESSAGE_MAP(CZoomView?CScrollView)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_MOUSEMOVE()
ON_WM_MOUSEWHEEL()
ON_WM_SETCURSOR()
ON_WM_RBUTTONDOWN()
END_MESSAGE_MAP()

IMPLEMENT_DYNAMIC(CZoomViewCScrollView)
CZoomView::CZoomView(void):CScrollView()
{
m_zoomMode=MODE_ZOOMOFF;
m_bCaptured=FALSE;
m_zoomScale=1.0f;
m_ptDragRect.SetRectEmpty();
m_hZoomInCursor=::LoadCursor(AfxGetInstanceHandle()MAKEINTRESOURCE(IDC_ZOOMIN_CURSOR));
m_hZoomOutCursor=::LoadCursor(AfxGetInstanceHandle()MAKEINTRESOURCE(IDC_ZOOMOUT_CURSOR));
m_hMoveCursor=::LoadCursor(AfxGetInstanceHandle()MAKEINTRESOURCE(IDC_MOVE_CURSOR));
m_bCenter=TRUE;
}

CZoomView::~CZoomView(void)
{
if?(m_hZoomInCursor)
DestroyCursor(m_hZoomInCursor);
if?(m_hZoomOutCursor)
DestroyCursor(m_hZoomOutCursor);
if?(m_hMoveCursor)
DestroyCursor(m_hMoveCursor);
}

void?CZoomView::OnPrepareDC(CDC*?pDC?CPrintInfo*?pInfo)
{
//?TODO:?在此添加專用代碼和/或調(diào)用基類
#ifdef?_DEBUG
if?(m_nMapMode?!=?MM_ANISOTROPIC)?{
TRACE0(“Error:?must?call?SetZoomSizes()?before?painting?zoom?view\n“);
ASSERT(FALSE);
return;
}
#endif?//_DEBUG
ASSERT_VALID(pDC);
ASSERT(m_totalLog.cx>=0?&&?m_totalLog.cy>=0);
ASSERT(m_totalDev.cx>=0?&&?m_totalDev.cy>=0);
//設(shè)置窗口坐標(biāo)系和設(shè)備坐標(biāo)系的映射方式,并設(shè)置窗口和視口的原點(diǎn)及坐標(biāo)范圍
pDC->SetMapMode(m_nMapMode);??//映射方式
pDC->SetWindowExt(m_totalLog);?//窗口范圍
CPoint?ptVpOrg;
if?(!pDC->IsPrinting())
{
pDC->SetViewportExt(m_totalDev);??//設(shè)置設(shè)備坐標(biāo)系中的視口范圍
ASSERT(pDC->GetWindowOrg()==CPoint(00));??//默認(rèn)的窗口坐標(biāo)系原點(diǎn)為0
ptVpOrg=-GetDeviceScrollPosition();??//設(shè)備坐標(biāo)系原點(diǎn)
//是否在客戶區(qū)中間顯示視圖
if?(m_bCenter)
{
CRect?rc;
GetClientRect(&rc);
if?(m_totalDev.cx ptVpOrg.x=(rc.Width()-m_totalDev.cx)/2;
if?(m_totalDev.cy ptVpOrg.y=(rc.Height()-m_totalDev.cy)/2;
}
}
else
{
CSize??printSize;
printSize.cx?=?pDC->GetDeviceCaps(HORZRES);
printSize.cy?=?pDC->GetDeviceCaps(VERTRES);
PersistRatio(m_totalLog?printSize?ptVpOrg);
pDC->SetViewportExt(printSize);
}
pDC->SetViewportOrg(ptVpOrg);??//設(shè)置設(shè)備坐標(biāo)系原點(diǎn)
CScrollView::OnPrepareDC(pDC?pInfo);
}

void?CZoomView::SetZoomSizes(SIZE?sizeTotal?const?SIZE&?sizePage?const?SIZE&?sizeLine)
{
ASSERT(sizeTotal.cx>=0?&&?sizeTotal.cy>=0);
m_nMapMode=MM_ANISOTROPIC;??//設(shè)置映射模式
m_totalLog=sizeTotal;??//設(shè)置邏輯坐標(biāo)系范圍
//以下是將窗口坐標(biāo)的范圍轉(zhuǎn)換為設(shè)備坐標(biāo)范圍
{
CWindowDC?dc(NULL);
dc.SetMapMode(m_nMapMode);
m_totalDev=m_totalLog;
dc.LPtoDP((LPPOINT)&m_totalDev);
}
//將當(dāng)前設(shè)備坐標(biāo)范圍負(fù)值給初始設(shè)備坐標(biāo)坐標(biāo)范圍
m_origTotalDev=m_totalDev;
m_origPageDev=sizePage;
m_origLineDev=sizeLine;
//重新計(jì)算并更新滾動(dòng)條
CalcBars();
//通知視圖進(jìn)行縮放
NotifyZoom();?
}

void?CZoomView::CenterOnLogicalPoint(CPoint?ptCenter)
{
//將視圖中某點(diǎn)的邏輯坐標(biāo)轉(zhuǎn)換為設(shè)備坐標(biāo)
Vi

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件??????15052??2014-02-24?05:35??CZoomView類\ZoomView.cpp

?????文件???????3117??2014-02-24?05:30??CZoomView類\ZoomView.h

?????目錄??????????0??2014-02-24?23:59??CZoomView類

-----------?---------??----------?-----??----

????????????????18169????????????????????3


評(píng)論

共有 條評(píng)論

相關(guān)資源