java - 如何更改椭圆的行和列的颜色以响应鼠标悬停在其中一个椭圆上?
问题描述
- 我已经在处理过程中构建了这个草图,它在网格上生成椭圆。我想知道当鼠标悬停在行和列上时如何更改行和列的颜色。
void setup()
{
size(400,400);
noStroke();
fill(180,50, 50, 100);
}
void draw()
{
background(255);
for (int row=0; row<10; row = row+1)
{
for (int col=0; col<10; col = col+1)
{
ellipse(20 + col*40, 20 + row*40,30,30);
if (mousePressed && (mouseButton == LEFT))
fill (random (55));
ellipse(20 + col*40, 20 + row*40,30,30);
}
}
}
解决方案
计算椭圆的中心点坐标:
int cY = 20 + row*40;
int cX = 20 + col*40;
鼠标的位置存储在内置变量mouseX
和mouseY
. 椭圆排列成网格。测试鼠标的x坐标或y坐标是否在属于椭圆的网格区域内。根据测试结果设置颜色:
if ((mouseX > cX-20 && mouseX < cX+20) || mouseY > cY-20 && mouseY < cY+20) {
fill(255, 50, 50, 255);
} else {
fill(180, 50, 50, 100);
}
完整示例:
void setup() {
size(400,400);
noStroke();
}
void draw() {
background(255);
for (int row=0; row < 10; row++) {
int cY = 20 + row*40;
for (int col=0; col < 10; col++) {
int cX = 20 + col*40;
if ((mouseX > cX-20 && mouseX < cX+20) || mouseY > cY-20 && mouseY < cY+20) {
fill(255, 50, 50, 255);
} else {
fill(180, 50, 50, 100);
}
ellipse(cX, cY, 30, 30);
}
}
}
推荐阅读
- string - 如何从图像中获取“var svgData”?
- typescript - Nest.js RangeError:超出最大调用堆栈大小
- c# - 在 SQL 选择语句中从文本框中传递整数值
- mysql - 错误代码:1305。FUNCTION ticket.IIF 不存在
- unit-testing - ContosoUniversityDotNetCore-Pages SliceFixture 与 AutoMapper
- python - 检测具有特殊字符的字符串之间的子字符串
- javascript - 如何在 Sublime 3 中设置 JavaScript?
- ios - 从swiftui中的“共享”菜单启动应用程序时如何访问文件的url
- javascript - 我正在尝试在 Vue.js 中重新制作用于碰撞检测的 javascript 代码
- python - 打字:如何将类作为参数传递?