首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在“处理”中未按所需位置绘图

在“处理”中未按所需位置绘图
EN

Stack Overflow用户
提问于 2017-01-31 03:04:06
回答 1查看 39关注 0票数 1

我试图通过拖动鼠标(例如,左上象限中的一个圆圈)在一个地方进行绘图,并使图形出现在画布中心周围的4个位置(包括鼠标光标下的一个右侧)。我试过以下代码:

代码语言:javascript
复制
int x=0;
int y=0;

void setup(){
   size(400, 400);  
   background(255); 
   translate(width/2, height/2); 
}
void draw() {
}

void mouseDragged(){
    translate(width/2, height/2); 

    for(int i=0; i<4; i++){
      rotate(PI/2); 
      x= mouseX ; y=mouseY;
      line(x, y, mouseX, mouseY);
    }
  }

但是,该图形不会在鼠标光标下绘制。如果我离左上角很近,线就画在画布的中央。

第二,在我尝试的过程中,总共画了5个数字,而不是4个。如果我接近左上角,多余的图形会出现在画布的右下角。这个不需要的数字比其他数字要小得多。

错误在哪里,如何纠正这两个问题?我想通过旋转命令(在画布的中心旋转)来实现这一点,尽管我看到我也可以使用转换命令在画布上的4个位置进行绘制。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-31 03:20:09

没有一个点在鼠标下面,因为在绘制点之前,您正在将画布(到width/2, height/2)进行转换,但是您正在使用mouseX, mouseY来绘制它们。把mouseX, mouseY看作是从左上角到X和Y的距离.如果你想要一个点在鼠标下面,你必须使用从你翻译到的点的距离!

换句话说,不是这样的:

代码语言:javascript
复制
x = mouseX; 
y = mouseY;

你想要这个

代码语言:javascript
复制
x = width/2 - mouseX; 
y = height/2 - mouseY;

至于正在绘制的额外点,这似乎是使用mouseDragged()函数的副作用。这里发生了一些奇怪的事情,但是您可以通过使用draw()函数和mousePressed变量而不是mouseDragged()函数来解决这个问题。

编辑:,我改变了他们应该遵守的顺序。看看我对你的next question的答案,以获得更好的解释。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41949018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档