在Processing中将颜色渐变展开到展开贴图

时间:2014-06-30 09:27:35

标签: processing

请告诉我如何在下面的代码中更改颜色渐变?在我的代码中我试图从这里控制颜色渐变:

for( Marker marker : countryMarkers ) {
    for( i=0; i<255; i++ ){
        marker.setColor(color(255, i, 0));    
    }
}

不幸的是我只得到一种颜色。你能帮忙吗?

import de.fhpotsdam.unfolding.mapdisplay.*;
import de.fhpotsdam.unfolding.utils.*;
import de.fhpotsdam.unfolding.marker.*;
import de.fhpotsdam.unfolding.tiles.*;
import de.fhpotsdam.unfolding.interactions.*;
import de.fhpotsdam.unfolding.ui.*;
import de.fhpotsdam.unfolding.*;
import de.fhpotsdam.unfolding.core.*;
import de.fhpotsdam.unfolding.mapdisplay.shaders.*;
import de.fhpotsdam.unfolding.data.*;
import de.fhpotsdam.unfolding.geo.*;
import de.fhpotsdam.unfolding.texture.*;
import de.fhpotsdam.unfolding.events.*;
import de.fhpotsdam.utils.*;
import de.fhpotsdam.unfolding.providers.*;
import java.util.List;
UnfoldingMap map;

void setup() {
  size(800, 600);

int i=0,k=15;

  map = new UnfoldingMap(this, new Microsoft.AerialProvider());
  Location cyprusLocation = new Location(35f, 33f);
  map.zoomAndPanTo(cyprusLocation, 11);
  float maxPanningDistance = 30; // in km
  map.setPanningRestriction(cyprusLocation, maxPanningDistance);
  //map = new UnfoldingMap(this);
  MapUtils.createDefaultEventDispatcher(this, map);

  List<Feature> countries = GeoJSONReader.loadData(this, "Dasos.geo.json");
  List<Marker> countryMarkers = MapUtils.createSimpleMarkers(countries);
  map.addMarkers(countryMarkers);
  /*
  for (Marker marker : countryMarkers) {
 // marker.setColor(color(255, 0, 0));

}
*/
  for (Marker marker : countryMarkers) {
for(i=0;i<255;i++){
marker.setColor(color(255, i, 0));


}
  }

}

void draw() {
  map.draw();
}
void keyPressed() {
  if (key == ' ') {
    map.getDefaultMarkerManager().toggleDrawing();
  }
}

1 个答案:

答案 0 :(得分:2)

您有一个嵌套循环,因此您要在显示每个标记之前使用每种颜色,从(255,0,0)到(255,255,0)。最后,它们在内循环中都留有相同的最后颜色......

您可能只使用常规for循环来遍历数组,因此您可以将索引用作color()的一部分。但是你需要注意最大数字,例如:

(注意你错过了常规for循环中的int

for(int i = 0; i < countryMarkers.length; i++){

  countryMarkers[i].setColor(color(255, (i%255), 0));    
}

或只是在for each内使用递增的var而不是索引...

for (Marker marker : countryMarkers) {

  marker.setColor(color(255, (otherVar++)%255, 0));
   }