📄 drawobject.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 + -