我正在实现一个显示容器级别的图表。根据填充水平,线条的颜色应该改变(例如,接近它应显示红色的最大值)。我不想计算线的不同部分并手动设置颜色,而是要定义一个颜色会自动更改的带。我想用自定义的Composite / CompositeContext做这个,但我似乎无法计算出栅格返回的像素的位置。我的想法是检查它们的y值并在源中定义颜色值并且y值超过阈值时更改颜色。
我的CompositeContext看起来像这样:
CompositeContext context = new CompositeContext() {
@Override
public void compose(Raster src, Raster dstIn, WritableRaster dstOut) {
int width = Math.min(src.getWidth(), dstIn.getWidth());
int height = Math.min(src.getHeight(), dstIn.getHeight());
int[] dstPixels = new int[width];
for (int y = 0; y < height; y++) {
dstIn.getDataElements(0, y, width, 1, dstPixels);
for (int x = 0; x < width; x++) {
if ( y ??? > 50) {
dstPixels[x] = 1;
} else {
// copy pixels from src
}
}
dstOut.setDataElements(0, y, width, 1, dstPixels);
}
}
“y”似乎与某些内容有关,但它不包含绝对y值(事实上,使用32x32栅格多次调用compose方法)。也许有人知道如何检索组件上的位置,甚至是更好的方法来定义一个区域,在该区域中给定的像素值被另一个值替换。
答案 0 :(得分:0)
你不能只用0 alpha填充渐变,然后用完整的alpha画线吗?