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

📄 gdrawview.h

📁 VS2005 MFC 实现的画图程序
💻 H
字号:
// GDrawView.h : CGDrawView 类的接口
//


#pragma once


#include"Graph_Union.h"
#include<list>
using namespace std;

class point{
public:

};


class CGDrawView : public CScrollView
{
protected: // 仅从序列化创建
	CGDrawView();
	DECLARE_DYNCREATE(CGDrawView)

// 属性
public:
	CGDrawDoc* GetDocument() const;
	list <Graph_Union> m_graphlist;
	list<Graph_Union>::iterator m_ptrGL,gp,tmpgp,docgp,tmppre;
	int m_LButton;
	Pen pen;
	Color color;
	Color FillColor;
	int LBDown,Move;
	CPoint old_point,new_point,move_point;
    Graph_Union gps;
	void savebmp(CString filename);
	void testdraw(CDC *pDC, CRect rcClient);
	void show(CDC *pDC);

   
    //CString test;  
	bool update;   //是否要删除选中
    int isupdate;   //画画布

	int select;     //是否有选中

     int hide;  //属性框是否隐藏

	 int width;
	 int height;




	 bool choice;
	 BOOL isdraw;
     int choicep_num;
	 BOOL editpnt;

	 int dline; //直线
	 BOOL click;  //画线时第一次按下鼠标
	 CPoint click_down;  //同上
	 CPoint tmp_point;  
	 BOOL first_draw;
	 int click_flag;
     int breakline;//画虚线
	 BOOL rail;
	 int ctl;

	 int type; //1是否为圆

      CString m_csFileName;

     COLORREF  bg_color;//画布颜色
	 BOOL isset;    //画布颜色是否设置
	 int whichshow;//0是画布属性,1是直线

    //移动
	 CPoint start_point,end_point;//移动鼠标位置



	void del(CDC * pDC,Graph_Union& gu) ;//删除选中的直线
	void deletepoint(CDC *pDC, Graph_Union &gu);//选除选中的点
    void init();//初始化
	void SetBuf();


//-------------------------填 充-------------------
	int fillset;
    list<CPoint> ptr_point;
	list<CPoint>::iterator fill_w;
	CPoint *pnt;

    int  point_num;
	CPoint fill_tmpPoint;
	BOOL fill_choice;



	void GetOutRect(CPoint *p,CPoint *pRect,int count);
	void FillTra(bool ** p,CPoint p0,CPoint p1,CRect &rect,COLORREF fill_col);
	void FillPoly_(CDC * pDC,CPoint *p,int count,COLORREF fill_col,COLORREF line_col);
	void DrawLine(CDC *pDC,int bx,int by,int ex,int ey,COLORREF m_col,int lf);
	void DrawLine(CDC *pDC,int bx,int by,int ex,int ey,COLORREF m_col,int lf,int size);
	void DrawLine11(CDC *pDC,int bx,int by,int ex,int ey,COLORREF m_col,int lf);
	void DrawLine11(CDC *pDC,int bx,int by,int ex,int ey,COLORREF m_col,int lf,int size);

	BOOL settop;;
	
	Graph_Union py;
	int flag;

	void FillPoly(CDC *pDC,CPoint *points,int num,COLORREF &fill_col,COLORREF &line_col,int size);
	void DrawPoly(CDC *pDC,CPoint *points,int num,COLORREF &line_col,int lf,int size);
	void GetSeed(CPoint *points,int num,CDC *pDC,int &x,int &y);
	void re_fill(CDC * pDC,int x,int y,COLORREF line_col,COLORREF fill_col);
	void SeedFillP(CDC *pDC,int x,int y,COLORREF &fill_col,COLORREF &line_col);

	void DrawTracks(CDC *pDC,Point *p,int count,Color col1,Color col2);
	void DrawBZ(CDC *pDC,Point *p,int count,Color col1,Color col2);
    void DrawBSample(CDC *pDC,Point *p,int count,Color col1,Color col2);
	//bool iscontain(CPoint pt, Poly_Union py0);



	//--------------------------------------------------------


// 操作
public:
//画图需要的DC,开始结束坐标(bx,by)(ex,ey),颜色color,线形lf,线粗size
	//void DrawLine(CDC * pDC,int bx,int by,int ex,int ey ,COLORREF m_col,int lf,int size);
	void getrect(Point &b,Point &e,CPoint * p);
	void ShowGraph(CDC* pDC);
	void ShowGU(CDC *pDC,Graph_Union &gu);
	void ShowGU(CDC * pDC,Graph_Union& gu,COLORREF col); 
	
	void drawcircle(CDC *pDC, int bx, int by, int br,COLORREF m_col,int size);

// 重写
public:
	virtual void OnDraw(CDC* pDC);  // 重写以绘制该视图
	virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
	virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
	virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
	virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);

// 实现
public:
	virtual ~CGDrawView();
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif

protected:

// 生成的消息映射函数
protected:
	DECLARE_MESSAGE_MAP()
public:
	afx_msg void On32773();
public:
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
public:
	afx_msg void OnMouseMove(UINT nFlags, CPoint point);
public:
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
public:
	afx_msg void OnSave();
public:
	afx_msg void OnAllsave();

	afx_msg void OnLine();

//填充---------------
public:
	afx_msg void OnSetfil();


//--------------------------
	
	
	afx_msg void OnCircle();

	afx_msg void OnSelectGraph();

	afx_msg void On_BreakLS();
public:
//	virtual void Serialize(CArchive& ar);
public:
	afx_msg void OnHide();
public:
	afx_msg void OnUpdateHide(CCmdUI *pCmdUI);
public:
	virtual void OnInitialUpdate();
public:
	virtual void Serialize(CArchive& ar);



public:
	afx_msg BOOL OnEraseBkgnd(CDC* pDC);
protected:
	virtual void OnUpdate(CScrollView* /*pSender*/, LPARAM /*lHint*/, CObject* /*pHint*/);
public:
	afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
public:
	afx_msg void On32775();
public:
	afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
public:
	afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
public:
	afx_msg void OnRailway();
};


#ifndef _DEBUG  // GDrawView.cpp 中的调试版本
inline CGDrawDoc* CGDrawView::GetDocument() const
   { return reinterpret_cast<CGDrawDoc*>(m_pDocument); }
#endif

⌨️ 快捷键说明

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