无论当前的scale()设置如何,送入strokeWidth()的值都会给出一个像素的笔触宽度?
答案 0 :(得分:1)
然而,Kevin提供的这个选项很简单直接:
手动乘以坐标
请注意,大多数绘图功能不仅需要坐标,还需要尺寸?
不要使用scale()
,而是跟踪用于形状尺寸的乘数浮点变量。手动缩放每个形状的尺寸:
void draw(){
//map mouseX to a scale between 10% and 300%
float scale = map(constrain(mouseX,0,width),0,width,0.1,3.0);
background(255);
//scale the shape dimensions, without using scale()
ellipse(50,50, 30 * scale, 30 * scale);
}
您可以将其作为演示程序运行:
function setup(){
createCanvas(100,100);
}
function draw(){
//map mouseX to a scale between 10% and 300%
var scale = map(constrain(mouseX,0,width),0,width,0.1,3.0);
background(200);
//scale the shape dimensions, without using scale()
ellipse(50,50, 30 * scale, 30 * scale);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.7/p5.min.js"></script>
问题本身就是另一个答案:你会向strokeWidth()
提供什么价值?如果scale()
使得笔划更大,但是你想保持它的外观相同,那意味着你需要使用较小的笔划重量,因为比例增加:厚度与比例成反比:
void draw(){
//map mouseX to a scale between 10% and 300%
float scale = map(constrain(mouseX,0,width),0,width,0.1,3.0);
background(255);
translate(50,50);
scale(scale);
strokeWeight(1/scale);
//scaled shape, same appearing stroke, just smaller in value as scale increases
ellipse(0,0, 30, 30);
}
你可以运行这个:
function setup(){
createCanvas(100,100);
}
function draw(){
//map mouseX to a scale between 10% and 300%
var scaleValue = map(constrain(mouseX,0,width),0,width,0.1,3.0);
background(240);
translate(50,50);
scale(scaleValue);
strokeWeight(1/scaleValue);
//scale the shape dimensions, without using scale()
ellipse(0,0, 30, 30);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.7/p5.min.js"></script>
凯文很有耐心,不仅要回答你的问题,还要回答你的意见,对他的时间充满慷慨。您需要耐心仔细阅读并理解所提供的答案。如果是这种情况,请自行尝试,然后回答有关澄清的具体问题。这是最好的学习方式。
只是问“我该怎么办?”没有展示你的尝试以及你对问题背后的想法是什么,期望复制/粘贴的片段不会让你走得太远,这不是stackoverflow的意思。
通过学习,使用可用的文档,特别是首先考虑问题,您将获得更多收获。你可能不会在第一时间解决这个问题(我知道我当然不会这样做),但是对它进行推理并从不同的角度进行观察会让你的装备运转起来。
无论情况如何,始终保持耐心,从长远来看,它将为您提供良好的服务。
更新也许您的意思是
无论当前的scale()设置如何,送入strokeWidth()的值都会给出一个像素的笔触宽度?
是如何在没有anti-aliasing的情况下绘制的?
如果是这样,您可以通过一行禁用平滑:在setup()
中调用noSmooth();
一次。尝试使用上面的示例代码。
答案 1 :(得分:1)
我认为acs::api.key.install("YOUR CENSUS KEY")
应该有效。这是一个例子:
strokeWeight(0)
答案 2 :(得分:0)
无。
scale()
的重点在于,它可以扩展所有内容。
您可能想要在图层中绘制内容:绘制一个缩放图层和一个包含单像素宽度线的未缩放图层。然后组合这些层。
如果您需要混合图层(例如缩放形状顶部的未缩放线条,在另一个缩放线条顶部),则无效。在这种情况下,您只需要在绘制线条之前进行缩放,然后再缩放以绘制形状。