利用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()
{
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;
}