colorMode(HSB);
colorMode(RGB);

我可以设置颜色模式。
显然函数 getColorMode() 不存在。
是否有其他解决方案来获得颜色模式?
我想做的是这样的

int cMode = getColorMode();
colorMode(HSB);
// draw stuff
colorMode(cMode);

这段代码在我的类(class) Track 中。我想绘制一个记录的GPS轨迹,色调值应该由速度或海拔高度控制。
现在,我在完成绘图后将颜色模式设置回 RGB。当然,最好将其设置回之前的颜色模式,而不仅仅是假设它已经是 RGB。

最佳答案

我们来看看 the source for PApplet 。该类包含此变量:



public PGraphics g;

这是 colorMode() 函数:

public void colorMode(int mode) {
  if (recorder != null) recorder.colorMode(mode);
  g.colorMode(mode);
}

这告诉我们 PApplet#colorMode() 实际上只是 PGraphics#colorMode() 的快捷方式。

所以让我们看看 the source for PGraphics 。来自该类的 colorMode() 函数最终指向这里:

public void colorMode(int mode,
                        float max1, float max2, float max3, float maxA) {
    colorMode = mode;
    //more code

这将我们引向 colorMode 变量:

/** The current colorMode */
public int colorMode; // = RGB;

换句话说,要获得当前的颜色模式,您必须从 PApplet 到其 g 变量,再到其 colorMode 变量。如果你在草图中,它看起来像这样:

void setup() {
 size(500, 500);
 colorMode(HSB);
}

void draw() {

  background(0);

  if(g.colorMode == RGB){
    println("RGB");
  }
  else if(g.colorMode == HSB){
    println("HSB");
  }
}

如果您不在草图中,则需要使用 PApplet 关键字传入 this 实例。

PApplet mySketch;
int colorMode = mySketch.g.colorMode;

关于processing - 处理中的 getColorMode(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37469859/

10-11 09:32