【发布时间】:2011-06-05 04:51:56
【问题描述】:
我有以下问题。我有一个图表程序,它的设计是黑色的,但图表(我从服务器获取的图像)很浅(它实际上只使用 5 种颜色:红色、绿色、白色、黑色和灰色)。
为了配合设计反转做得很好,唯一的问题是红色和绿色也被反转了(绿色->粉红色,红色->绿色)。
有没有办法反转除了这两种颜色之外的所有颜色,或者在反转后重新绘制这些颜色? 这些操作的成本有多大(因为我经常更新图表)?
提前致谢:)
更新
我尝试在循环中用 setPixel 方法替换颜色
for(int x = 0 ;x < chart.getWidth();x++) {
for(int y = 0;y < chart.getHeight();y++) {
final int replacement = getColorReplacement(chart.getPixel(x, y));
if(replacement != 0) {
chart.setPixel(x, y, replacement);
}
}
}
不幸的是,该方法耗时太长(~650ms),有没有更快的方法,setPixels() 方法工作得更快吗?
【问题讨论】:
-
您写道:“它实际上只使用了 5 种颜色”,但您需要小心。您认为的“颜色”可能不是操作系统认为的“颜色”。例如,在 ARGB 32 位中,0xFF0000 看起来像“红色”。但 0xFF0001 也是如此。然而它们是两种不同的颜色。
-
谢谢,但它实际上只使用了 5 种颜色。由于我可以访问图表的生成位置,因此它们非常简单:)