You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
3.3 KiB
C++
122 lines
3.3 KiB
C++
//////////////////////////////////////////////////////////////////////////////
|
|
//文件: CItem类扩展
|
|
//主要功能:
|
|
// 操作各类元素或完成一定的功能
|
|
//
|
|
//程序编写: 2006-12-07
|
|
//
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#pragma once
|
|
#include "itemBase.h"
|
|
#include "cursor.h"
|
|
#include "DrawOperator\memdc.h"
|
|
|
|
namespace NDrawView
|
|
{
|
|
|
|
#define ITEM_VIEW_DEFAULT 0
|
|
#define ITEM_VIEW_PRINT 1
|
|
|
|
class CItemView :
|
|
public CItemBase
|
|
{
|
|
public:
|
|
CItemView(void);
|
|
CItemView(CSigmaDoc * ppDoc);
|
|
virtual ~CItemView(void);
|
|
|
|
void OnLButtonDown(CDC *pDC, UINT nFlags, CPoint point, int vk) override;
|
|
void OnLButtonUp(CDC *pDC, UINT nFlags, CPoint point, int vk) override;
|
|
int OnMouseMove(CDC *pDC, UINT nFlags, CPoint point) override;
|
|
void OnRButtonDblClk(UINT nFlags, CPoint point) override;
|
|
void OnRButtonDown(UINT nFlags, CPoint point) override;
|
|
BOOL OnRButtonUp(UINT nFlags, CPoint point) override;
|
|
BOOL OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) override;
|
|
BOOL OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) override;
|
|
BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) override;
|
|
|
|
//<打印及打印预览>
|
|
void SetScreenRect(CRect rect);
|
|
virtual void OnLButtonDownForPreviewPrint(UINT nFlags, CPoint point);
|
|
virtual void OnLButtonUpForPreviewPrint(UINT nFlags, CPoint point);
|
|
virtual void OnMouseMoveForPreviewPrint(UINT nFlags, CPoint point);
|
|
void ScreenToPrint(CPoint & point);
|
|
void GetViewFactors(double & offsetXOut, double & offsetYOut, double & zoomFactorOut);
|
|
void SetViewFactors(double offsetX, double offsetY, double zoomFactor);
|
|
void SetViewScreenFactors(double offsetX, double offsetY, double zoomFactor);
|
|
// 变换到原始坐标
|
|
double TransfromX(double x);
|
|
double TransfromY(double y);
|
|
CRect TransfromRect(CRect rtSource);
|
|
|
|
double DeTransfromX(double x);
|
|
double DeTransfromY(double y);
|
|
// 转换到变换坐标
|
|
CRect DeTransfromRect(CRect rtSource);
|
|
//</打印及打印预览>
|
|
|
|
void SetMemDC(CMemoryDC* pMemViewDC) {
|
|
m_pMemViewDC = pMemViewDC;
|
|
}
|
|
CDC * GetMemDC(void) { return m_pMemViewDC; }
|
|
virtual CRect GetClientRect(void);
|
|
virtual void setClientRect(CRect rect);
|
|
virtual int GetPanMode(void);
|
|
virtual BOOL GetViewRange(CRect8& rect); //获得要全图显示的范围
|
|
|
|
eCursorSelectStruct GetCursor(void);
|
|
int IsViewState(void);
|
|
|
|
void Extend(int mode);
|
|
void Enlarge(void);
|
|
void Reduce(void);
|
|
void Reduce(double factor);
|
|
|
|
/**
|
|
* 放大画布
|
|
*
|
|
* \param point 放大的中心点
|
|
* \param factor 放大倍数,事实上缩小也是它,小于 1 时为缩小
|
|
*/
|
|
void Reduce(CPoint2D point, double factor);
|
|
void ReduceForScreenPoint();
|
|
void PanTo(CPoint2D point); //移动到point,以point为中心
|
|
|
|
void EnableOldMode(BOOL bEnable);
|
|
BOOL IsOldMode(void);
|
|
public:
|
|
CView* GetActiveView(void);
|
|
BOOL IsCaptureCursor(void);
|
|
void SetDisplayRange(void);
|
|
int zoomMode;
|
|
protected:
|
|
CPoint m_ptLeft;
|
|
CRect8 m_rect;
|
|
CRect8 m_rectForPrint;
|
|
CRect m_scressRect;
|
|
CRect m_clientRect;
|
|
BOOL bCaptureCursor;
|
|
// CMemoryDC m_MemDC;
|
|
BOOL m_bRButtonDown;
|
|
BOOL m_bEnableCaptureCursor;
|
|
BOOL m_bOldViewMode;
|
|
//int m_type;
|
|
CMemoryDC* m_pMemViewDC;
|
|
double m_offsetX;
|
|
double m_offsetY;
|
|
double m_zoomFactor;
|
|
|
|
double m_offsetScreenX;
|
|
double m_offsetScreenY;
|
|
double m_screenFactor;
|
|
|
|
void LButtonDownPan(CPoint point);
|
|
void MouseMovePan(CPoint point);
|
|
void MouseMovePanForPreviewPrint(CPoint point);
|
|
void LButtonUpPan(CPoint point);
|
|
void RectangleSolid(CXyDC* pDC, CRect8* pRect);
|
|
};
|
|
|
|
}; |