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()方法或鼠标或键盘中 事件处理


另一种选择是使用数组或列表跟踪椭圆,因此您需要执行两个步骤:

  • 创建一个基本类来跟踪专门的椭圆属性(x、y、w、h,还有zIndex和对象将保存的任何额外数据)
  • 创建一个可以根据zIndex排序的数组/数组列表
  • 下面是一个使用键入的

    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;
      }
    }