Processing 在处理过程中,matplotlib中是否有类似于zorder的属性?
我的处理程序中随机放置了许多圆圈。每一个都是这样启动的:Processing 在处理过程中,matplotlib中是否有类似于zorder的属性?,processing,Processing,我的处理程序中随机放置了许多圆圈。每一个都是这样启动的: ellipse(x, y, radius, radius); 我想知道是否可以为每个圆指定一个z索引值。较高z指数的圆圈显示在较低z指数的圆圈上。我现在无法测试这一点,但我相信您应该看看fill()方法。此函数中的第四个参数指定不透明度(也称为alpha透明度)。在中对其进行了描述 编辑:这个关于绘图顺序的问题似乎与您的问题相同。有人建议玩弄图像的透明度,但似乎更好的答案是利用图像的透明度。以下是——第一个问题似乎与你的问题大致相同
ellipse(x, y, radius, radius);
我想知道是否可以为每个圆指定一个z索引值。较高z指数的圆圈显示在较低z指数的圆圈上。我现在无法测试这一点,但我相信您应该看看fill()
方法。此函数中的第四个参数指定不透明度(也称为alpha透明度)。在中对其进行了描述
编辑:这个关于绘图顺序的问题似乎与您的问题相同。有人建议玩弄图像的透明度,但似乎更好的答案是利用图像的透明度。以下是——第一个问题似乎与你的问题大致相同 引用图层示例部分: 动态添加、删除或重新排序层 可以在执行过程中动态添加、删除或重新排序层 草图的执行,但执行时应特别小心。这个 可以操纵由AppletLayers对象管理的层列表 通过获取ListIterator对象。列表的语义 通过迭代器操作应该通过阅读 . 原因很难解释 在草图执行期间操纵列表是因为 正在迭代层以渲染它们。最好的 操作图层列表的位置位于主草图的draw()中 方法,而不是在层的draw()方法或鼠标或键盘中 事件处理
另一种选择是使用数组或列表跟踪椭圆,因此您需要执行两个步骤:
ArrayList椭圆=新的ArrayList();
无效设置(){
尺寸(400400,P2D);
光滑的();
填充(192,0,0192);
重置();
}
无效重置(){
省略号。清除();
对于(int i=0;i<40;i++){
浮动半径=随机(5,25);
椭圆e=新椭圆(i*10,随机(20380),半径,半径,i);
省略号。添加(i,e);
}
}
作废提款(){
背景(255);
对于(椭圆e:椭圆)e.draw();
}
按下void键(){
重置();
}
类椭圆{
浮动x,y,w,h;
int-zIndex;
椭圆(浮动轴、浮动ay、浮动aw、浮动ah、内部az){
x=ax;
y=ay;
w=aw;
h=啊;
zIndex=az;
}
作废提款(){
椭圆(x,y,w,h);
}
}
请注意,ArrayList非常灵活,您可以轻松地在所需索引处添加元素
如果要使用数组,需要确保可以根据选择的属性对数组进行排序,因此需要实现:
int numelipses=40;
椭圆[]椭圆=新椭圆[numEllipses]//这将存储原始/未排序的数据
椭圆[]EllipseSorted=新椭圆[numEllipses]//这将存储已排序的数据
无效设置(){
尺寸(400400,P2D);
光滑的();
填充(192,0,0192);
重置();
}
无效重置(){
对于(int i=0;ithis.zIndex)返回1;
否则如果(e.zIndex
ArrayList<Ellipse> ellipses = new ArrayList<Ellipse>();
void setup(){
size(400,400,P2D);
smooth();
fill(192,0,0,192);
reset();
}
void reset(){
ellipses.clear();
for(int i = 0 ; i < 40; i++){
float radius = random(5,25);
Ellipse e = new Ellipse(i*10,random(20,380),radius,radius,i);
ellipses.add(i,e);
}
}
void draw(){
background(255);
for(Ellipse e : ellipses) e.draw();
}
void keyPressed(){
reset();
}
class Ellipse{
float x,y,w,h;
int zIndex;
Ellipse(float ax,float ay,float aw,float ah,int az){
x = ax;
y = ay;
w = aw;
h = ah;
zIndex = az;
}
void draw(){
ellipse(x,y,w,h);
}
}
int numEllipses = 40;
Ellipse[] ellipses = new Ellipse[numEllipses];//this will store original/unsorted data
Ellipse[] ellipsesSorted = new Ellipse[numEllipses];//this will store the sorted data
void setup(){
size(400,400,P2D);
smooth();
fill(192,0,0,192);
reset();
}
void reset(){
for(int i = 0 ; i < numEllipses; i++){
float radius = random(5,25);
int index = (int)random(0,numEllipses);
Ellipse e = new Ellipse(i*10,random(20,380),radius,radius,index);
ellipses[i] = e;
}
//copy original data into an array to be sorted
arrayCopy(ellipses, ellipsesSorted);
//sort the array - uses the compareTo method behind the scenes
Arrays.sort(ellipsesSorted);
}
void draw(){
background(255);
for(Ellipse e : ellipsesSorted) e.draw();
}
void keyPressed(){
reset();
}
class Ellipse implements Comparable<Ellipse>{
float x,y,w,h;
int zIndex;
Ellipse(float ax,float ay,float aw,float ah,int az){
x = ax;
y = ay;
w = aw;
h = ah;
zIndex = az;
}
void draw(){
ellipse(x,y,w,h);
}
int compareTo(Ellipse e)
{
if(e.zIndex > this.zIndex) return 1;
else if(e.zIndex < this.zIndex) return -1;
else return 0;
}
String toString(){
return "z index: "+zIndex;
}
}