网站首页 > 教程分享 正文
跟随鼠标位置画圆
我们要把看似复杂的大任务,分解成步骤清晰的小任务
- 要知道这次鼠标的位置(x,y)
- 根据这次的鼠标位置画圆,擦除之前位置的圆
- 以上两步不断重复——循环
获取一次鼠标位置
话不多说,我们先上代码。以下代码可以获取小绿旗被按下的那刻,鼠标的位置
#include<iostream>
#include<windows.h>
#include<graphics.h>
#include<conio.h>
#include<stdio.h>
int main(){
POINT p;
GetCursorPos(&p); //GetCursorPos函数会获得鼠标的位置,然后存进这个参数里
printf("X: %d Y: %d \n", p.x, p.y);
_getch();
return 0 ;
}
接下来让我们一起来来认识上面那段代码中的新朋友吧
结构体
什么是结构体:
概念都源自生活。生活里,有些东西很简单,比如数字8,字母A;但是更多的东西是由许多部分构成的。以一个纸上的点为例,如果要描述这个点,我们可能会用到点的位置,点的颜色,这些叫做点的属性,因为点有多个属性,所以我们可以把点当做一个结构体
在下面 的代码里,我们自己定义了一个结构体,取名为POINT,这个结构体的属性有整数x和整数y(红框部分)。结构体被定义出来之后,就像月饼模具
要想真的做出月饼来,我们需要用模具压一下。代码里的蓝框部分就是用POINT这个模板,制作一个实实在在的p。之后我们就可以通过p.x, p.y来获得p的x属性和y属性了
&p的含义
先打印&p来看一看
这段奇怪的数字和字母的组合,是p这个变量在计算机内存中的地址,也就是说 ,&p 是p这个变量在内存中的地址
- &是一个运算符号,用来获得变量的地址,所以也叫取址符
- 只要我们定义了一个变量,它都是有地址的。计算机是通过这个地址找到这个变量的。
所以,GetCursorPos(&p)是获取鼠标的位置,然后通过找到P的地址,把鼠标位置的值传给p,使得p.x的值是鼠标的x坐标,p.y的值是鼠标的y坐标
持续获取鼠标位置
知道了怎么获得鼠标位置,接下来只要我们把获得鼠标位置的代码放到while循环里面,程序就会一直去获得鼠标位置。鼠标移来移去的动作都被while循环时刻监视着。
// 如何获取鼠标位置
#include<iostream>
#include<windows.h>
#include<graphics.h>
#include<conio.h>
#include<stdio.h>
int main(){
POINT p;
while(1){
GetCursorPos(&p);
printf("X: %d Y: %d \n", p.x, p.y);
}
_getch();
return 0 ;
}
画圆
之前的课程我们已经学过画圆的方式,就不多说了
initgraph(width, height);
fillcircle(x, y, r);
- 想让圆心的坐标等于鼠标的坐标,怎么办?答案:fillcircle(p.x, p.y, r) //其中r要在之此前声明好
完整的代码
现在我们把前面的代码整理在一起,下面的不到20行代码,就实现了小球跟随鼠标移动的功能,怎么样,是不是也想动手试一试呢?
#include<iostream>
#include<windows.h>
#include<graphics.h>
#include<conio.h>
#include<stdio.h>
int main() {
initgraph(600, 600);
int r = 10;
POINT p;
while (1) {
cleardevice();
GetCursorPos(&p);
fillcircle(p.x, p.y, r);
Sleep(10);
}
_getch();
return 0;
}
这就是实现鼠标跟随的最基本方式了,通过更深入的学习,我们可以利用鼠标跟随和其他方式做出下面的动画效果。这就是今天的内容,欢迎关注我们,了解更多内容
- 上一篇: 怎么设置录屏时鼠标跟随?一种方法教会你
- 下一篇: 跟着职业战队选手入的鼠标,好用到飞起
猜你喜欢
- 2024-09-10 JavaScript 鼠标坐标和盒子位置(js 获取鼠标坐标)
- 2024-09-10 如何让屏幕内容与鼠标/触摸板同向滚动
- 2024-09-10 javascript实现的提示浮层跟随鼠标移动
- 2024-09-10 paperJS破冰学习03-鼠标跟随式球状3d动画效果(中)
- 2024-09-10 开发公司同事鼠标无线接收器的秘密
- 2024-09-10 跟着诗妍姐姐学电脑——鼠标(喜欢的人发信息不回)
- 2024-09-10 雷柏V300PRO双模无线蓝牙游戏鼠标,我的鼠标新宠
- 2024-09-10 跨表引用你还在直接鼠标拉选?“名称管理器”助你事半功倍!
- 2024-09-10 299元最强办公鼠标 三种无线连接方式——雷柏MT750评测
- 2024-09-10 支持中大小手、4K和无线充电 - 雷柏 VT9PRO+VT9PRO mini 无线游戏鼠标
你 发表评论:
欢迎- 最近发表
-
- IT之家学院:使用PIN或密码审批管理员权限
- Yarn 安装的时候提示错误 error:0308010C:digital envelope routines
- Windows常用的一些CMD运行命令(windows常见的命令)
- 电脑忘记开机密码10秒解决(戴尔电脑忘记开机密码10秒解决)
- 如何下载Windows 10聚焦提供的锁屏壁纸
- Windows CMD 命令大全:简单粗暴收藏!
- 系统小技巧:解决CHKDSK只读模式问题
- Windows的cmd都有哪些奇技淫巧?这22个CMD命令记得收藏起来!
- windows错误代码0x80072EE2?win10系统更新错误问题的处理方法
- Windows 10技术预览版快捷键方式汇总
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)