【问题标题】:Randomize image when mouse pressed - Processing按下鼠标时随机化图像 - 处理
【发布时间】:2021-06-02 08:24:34
【问题描述】:
  • 我正在尝试制作一个网格,其中每个单独的单元格都包含我的数据文件夹中的一个随机图像。

  • 到目前为止,我已经完成了在每个单元格中使用不同的图像,但它不会随机化

  • 它不是从文件夹中的600+ 中随机选择一张,而是按1 to 27 的顺序放置每张图片。

  • 除此之外,我希望它在每次我用鼠标单击时随机化,而不是在它关闭并再次播放时随机化。代码:

    PImage img[];
    int nPics;
     
    int w;
    int h;
    
    
    int rand;
    
     
    void setup(){
      
      size(1500,500);
      nPics=27;
      img = new PImage[nPics];
    
      w=width/9;  
      h=height/3; 
    
    for (int i = 0; i <nPics; i++) {
        img[i] = loadImage("img_" +nf(i,3)+ ".jpg");
        imageMode(CORNERS);
      }

      //rand = int(random(0,687));
      //img[0]=loadImage("img_" + nf(rand,3)+ ".jpg");

    }
     
    void draw(){
    background(0);
      for(int i=0;i<nPics;i=i+3){  
         int col = i/3;
         for(int row=0;row<3;row++)
           image(img[i+row],col*w,row*h,(col+1)*w,(row+1)*h);
      }
      
    }

【问题讨论】:

    标签: processing


    【解决方案1】:

    当您加载图像时,您使用的是i 而不是rand。为了在您单击鼠标时随机化图像,您可以使用mousePressed() 将不同的图像重新加载到您的数组中。

    这应该可行:

    PImage img[];
    int nPics;
    
    int w, h;
    
    void loadImages(){
      for (int i = 0; i < nPics; i++) {
        img[i] = loadImage("img_"+ nf(int(random(0, 687)), 3) + ".jpg");
        imageMode(CORNERS);
      }
    }
    
    void setup() {
      size(1500, 500);
      nPics=27;
      img = new PImage[nPics];
    
      w=width/9;  
      h=height/3; 
    
      loadImages();
    }
    
    void mousePressed(){
      loadImages();
    }
    
    void draw() {
      background(0);
      for (int i=0; i<nPics; i=i+3) {  
        int col = i/3;
        for (int row=0; row<3; row++)
          image(img[i+row], col*w, row*h, (col+1)*w, (row+1)*h);
      }
    }
    

    【讨论】:

    • 非常感谢!这正是我所需要的,我不知道如何计算出随机部分和 i,现在清楚多了!
    • 不用担心,i 只是循环中的索引,它将采用0 的值直到nPics,因为ii++ 的每个循环中递增1。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 2013-11-04
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    相关资源
    最近更新 更多