跟随鼠标轨迹画线
//编译环境:Visual C++ 6.0,EasyX_20190219(beta)
#include<stdio.h>
#include<graphics.h>
#include<conio.h>
void pen()
{
int x0, y0;
MOUSEMSG m; // 定义鼠标消息
while (true)
{
flag: //重置开始
m = GetMouseMsg();// 获取一次鼠标消息
switch (m.uMsg)
{
case WM_LBUTTONDOWN:x0 = m.x; y0 = m.y; //鼠标第一次按下时,得到坐标(x0,y0)
while (true)
{
m = GetMouseMsg();// 获取一条鼠标消息
line(x0, y0, m.x, m.y);
x0 = m.x; y0 = m.y;
switch (m.uMsg)
{
case WM_LBUTTONUP:
goto flag; //跳回到flag处进行重置
break;
}
}
break;
}
}
}
void main()
{
initgraph(640, 480);
setcolor(YELLOW);
MOUSEMSG m;
while(true)
{pen();}
}
效果演示如下:(想画啥就画啥,是不是很自由!)
鼠标点击两点画线
//编译环境:Visual C++ 6.0,EasyX_20190219(beta)
#include <stdio.h>
#include <graphics.h>
void twopiont();
void main()
{
initgraph(640, 480); //初始化图形界面,窗口分辨率设置为640*480
MOUSEMSG p; //定义一个鼠标的结构体
setcolor(YELLOW);
//鼠标按下则开始运行函数
while (true)
{
p = GetMouseMsg();
if (p.uMsg == WM_LBUTTONDOWN) twopiont();
}
}
/*实现在两点之间画一条直线*/
void twopiont()
{
int x0, y0, x1, y1;
MOUSEMSG m; // 定义结构体保存鼠标消息
while (true)
{
flag: //重置开始
m = GetMouseMsg();// 获取一次鼠标消息
switch (m.uMsg)//判断鼠标信息类型
{
case WM_LBUTTONDOWN:
x0 = m.x; y0 = m.y; //鼠标第一次按下时,获取鼠标当前坐标(x0,y0)
circle(x0,y0,1);
while (true)
{
m = GetMouseMsg();// 再次获取一条鼠标消息
switch (m.uMsg)
{
case WM_LBUTTONDOWN:
x1 = m.x; y1 = m.y;//鼠标第二次按下时,得到坐标(x1,y1)
line(x0, y0, x1, y1);
circle(x1,y1,1);
//return;
goto flag; //跳回到flag处进行重置
}
}
}
}
}
效果展示如下: