【问题标题】:Cannot invoke getGreen() on the Primitive Type int无法在原始类型 int 上调用 getGreen()
【发布时间】:2013-11-11 05:11:39
【问题描述】:

所以我继续使用我的应用程序从用户拍摄的照片中挑选颜色并返回 RGB 值。问题是,当我尝试获取颜色的绿色值时,我收到一条错误消息,提示“无法在 Primitive Type int 上调用 getGreen()”。这是我写的代码:

Bitmap bitmap = ((BitmapDrawable)iv.getDrawable()).getBitmap(); 
int touchedRGB = bitmap.getPixel(x,y);          
rgbvals.setText("Color Value" + "#" + Integer.toHexString(touchedRGB));
rgbvals.setTextColor(touchedRGB);
int gval = touchedRGB.getgreen();

我也尝试将最后一行写成

    String gval = Integer.toString(touchedRGB).getGreen();

当然 getGreen() 只能用于 int 类型。提前感谢大家的帮助!

【问题讨论】:

  • 我上次检查原语没有方法。
  • 您能再解释一下吗?我以前读过,但这对我来说真的没有意义(我正在从 C 过渡到 Java,所以一些细微差别有点奇怪)

标签: java android image-processing colors


【解决方案1】:

可以使用Color类的静态方法green

返回颜色 int 的绿色分量。这和说的一样 (颜色 >> 8) & 0xFF

int gval = Color.green(touchedRGB);

【讨论】:

  • 是的,你做到了。要么测试你的代码,要么去阅读 Javadocs。
  • @DavidWallace developer.android.com/reference/android/graphics/Color.html 去阅读安卓文档。
  • 我很抱歉。我不知道安卓人添加了一个完全不同的类,叫做Color。您可能应该在回答中指出,这必须是android.graphics.Color,而不是java.awt.Color。我将类似地编辑我的答案。谢谢你教育我。
  • 好的,谢谢@ZouZou。我的答案不见了。我赞成你的。我想我应该远离 Android 问题——在某种程度上,它并不是真正的 Java。
【解决方案2】:

错误在这里:

touchedRGB.getgreen();

Java 编译器尝试这样说:

由于int touchedRGB = bitmap.getPixel(x,y);touchedRGB 是原始数据类型(它是整数),因此您不能在原始数据类型上调用方法,它们不是对象。

【讨论】:

    猜你喜欢
    • 2018-11-03
    • 2012-04-15
    • 1970-01-01
    • 2014-05-19
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多