当前位置 博文首页 > 吴斌_qM的博客:简易绘图工具(后续会优化)

    吴斌_qM的博客:简易绘图工具(后续会优化)

    作者:[db:作者] 时间:2021-07-13 21:44

    利用vs 2019和easyx图形库完成简易绘图工具(雏形)

    需要的工具:
    • Win 10
    • VS 2019
    • EasyX
    main.cpp
    #include <graphics.h>
    struct Point
    {
    	int x;
    	int y;
    };
    struct LineTool
    {
    	int size;						//大小
    	COLORREF color;					//颜色
    	struct Point beginPos;			//线的起点
    	bool isDown;					//两个鼠标操作判断开发
    };
    struct LineTool* createLineTool(int size, COLORREF color)
    {
    	struct LineTool* pLine = (struct LineTool*)malloc(sizeof(struct LineTool));
    	if (pLine == NULL)
    		return NULL;
    	pLine->color = color;
    	pLine->size = size;
    	pLine->isDown = false;
    	return pLine;
    }
    void  drawLine(struct LineTool* pTool, MOUSEMSG m)
    {
    	//鼠标左键按下
    	if (m.uMsg == WM_LBUTTONDOWN)
    	{
    		pTool->beginPos.x = m.x;
    		pTool->beginPos.y = m.y;
    		pTool->isDown = true;
    	}
    	//鼠标左键弹起
    	if (m.uMsg == WM_LBUTTONUP)
    	{
    		pTool->isDown = false;
    	}
    	//鼠标移动+左键按下
    	if (m.uMsg == WM_MOUSEMOVE && pTool->isDown == true)
    	{
    		setlinestyle(PS_ENDCAP_ROUND, pTool->size);
    		setlinecolor(pTool->color);
    		line(pTool->beginPos.x, pTool->beginPos.y, m.x, m.y);
    	}
    	pTool->beginPos.x = m.x;
    	pTool->beginPos.y = m.y;
    }
    //颜色版
    struct ColorTool
    {
    	int x;
    	int y;
    	int r;
    	COLORREF color;
    };
    
    struct ColorTool* createColorTool(int x, int y, int r, COLORREF color)
    {
    	struct ColorTool* pColor = (struct ColorTool*)malloc(sizeof(struct ColorTool));
    	if (pColor == NULL)
    		return NULL;
    	pColor->x = x;
    	pColor->y = y;
    	pColor->r = r;
    	pColor->color = color;
    	return pColor;
    }
    void drawColorTool(struct ColorTool* pColor)
    {
    	setfillcolor(pColor->color);
    	solidcircle(pColor->x, pColor->y, pColor->r);
    }
    
    void drawRectangle()
    {
    	//set:设置  fill:填充  color:颜色
    	setfillcolor(RGB(239, 239, 239));
    	solidrectangle(1000 - 100, 0, 1000, 800);
    }
    int main()
    {
    	//逻辑
    	initgraph(1000, 800);
    	setbkcolor(WHITE);
    	cleardevice();
    	struct LineTool* pLine = createLineTool(5, BLACK);
    	while (1)
    	{
    		drawRectangle();
    		while (MouseHit())
    		{
    			MOUSEMSG m = GetMouseMsg();		//获取鼠标消息
    			drawLine(pLine, m);
    		}
    	}
    	closegraph();
    	return 0;
    }
    
    cs
    下一篇:没有了