⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drawobject.h

📁 此程序实现类似于windows画图工具的源代码。有铅笔
💻 H
字号:
/*
 *   Author   :  msz
 *   Mail     :  jinhao7654321@163.com
 */
#ifndef __CDRAWOBJECT__
#define __CDRAWOBJECT__
#pragma once
#include <atlimage.h>

class CDrawObject
{
public:
	CDrawObject();
	virtual ~CDrawObject(void);	
	virtual void DrawSelf(CDC* pDC)=0;
	CRect& GetBoundRect() { return m_rect; }
	virtual void OffsetBounds(CPoint ptDelta){m_rect.OffsetRect(ptDelta);};	
	virtual void SetBounds(const CPoint& ptTopLeft, const CPoint& ptBottomRigth);
	void DrawTracker(CDC* pDC);		
	int HitTest(CPoint point, BOOL bSelected=FALSE);
	static HCURSOR GetHandleCursor(int nHandle);
	void MoveHandleTo(int nHandle, CPoint point);	

	enum MyPenStyle
	{
		psDot1,
		psDot2,
		psDot3,
		psRect1,
		psRect2,
		psRect3
	};
	enum ShapeType
	{
		line,
		rect,
		ellipse,
		roundrect
	};
	enum ShapeStyle
	{
		styleFrameOnly,
		styleFillAndFrame,
		styleFillOnly
	};
protected:
	CRect               m_rect;
	CPoint GetHandle(int nHandle);
	CRect GetHandleRect(int nHandleID);		
};

//画笔 画刷 橡皮擦
class CDrawPen :public CDrawObject
{
public:
	CDrawPen();
	~CDrawPen(void);
	void DrawSelf(CDC* pDC);
public:

	CArray<CPoint,CPoint>  m_pointArray; 
	void SetPenStyle(COLORREF color, UINT style,float fZoom=1);
	CPen* GetCurrentPen() { return &m_penCur; }
	void AdjustBounds();
private:
	CPen m_penCur;
	UINT m_penStyle;
	COLORREF m_colorFore;	
};

//直线 矩形 椭圆 圆角矩形
class CDrawShape :public CDrawObject
{
public:
	CDrawShape(UINT type,const CRect& rect=CRect(0,0,0,0));	
	~CDrawShape(void);
	void DrawSelf(CDC* pDC);
	void SetBounds(const CPoint& ptTopLeft, const CPoint& ptBottomRigth);
private:
	int m_ShapeType;	
public:


	void SetShapeStyle(COLORREF colorFore,COLORREF colorBack,UINT lineWidth,UINT shapeStyle,float fZoom=1);
	CPen* GetCurrentPen() { return &m_penCur; }
	CBrush* GetCurrentBrush() { return &m_brushCur; }	
private:
	CPen m_penCur;
	CBrush m_brushCur;
};

//选择区域
class CDrawArea :public CDrawObject
{
public:
	CDrawArea(COLORREF colorBack);	
	~CDrawArea(void);
	void DrawSelf(CDC* pDC);
	virtual void OffsetBounds(CPoint ptDelta){m_rect.OffsetRect(ptDelta); m_bHasMoved = TRUE;};		
public:
	void SetOrigArea(const CPoint& ptTopLeft, const CPoint& ptBottomRigth, HBITMAP hBMP);	
	void SetBounds(const CPoint& ptTopLeft, const CPoint& ptBottomRigth);
	BOOL IsMoved(){return m_bHasMoved;};
	void DestroyImage(){m_imgArea.Destroy();};
private:
	CRect m_rectOrig;
	COLORREF m_colorBack;
	CImage	m_imgArea;
	BOOL m_bHasMoved;
};

//文本区域
class CDrawText :public CDrawObject
{
public:
	CDrawText();	
	~CDrawText(void);
	void DrawSelf(CDC* pDC);
public:
	CString m_strText;
	void SetTextStyle(const LOGFONT& lf, COLORREF colorText);
	void SetText(const CString& str);
private:
	
	CFont m_font;
	COLORREF m_colorText;
};



#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -