有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java图形:复合

我正在实现一个显示容器级别的图表。根据填充水平,线条的颜色应发生变化(例如,接近最大值时,应显示红色)。我不想计算线条的不同部分并手动设置它们的颜色,而是想定义一个颜色自动变化的波段。我本想用自定义的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方法)。也许有人知道如何检索组件上的位置,甚至知道如何更好地定义一个区域,其中给定的像素值被另一个值替换


共 (1) 个答案

  1. # 1 楼答案

    你不能用一个0 alpha的渐变来填充,然后用完整的alpha来画线吗