Java:复合

Posted

技术标签:

【中文标题】Java:复合【英文标题】:Java: Composite 【发布时间】:2011-04-10 02:16:17 【问题描述】:

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

【问题讨论】:

【参考方案1】:

你不能只用 0 alpha 填充渐变,然后用全 alpha 画线吗?

【讨论】:

感谢您的评论。我也可以实现一个画家。方法 getRaster(int x, int y, int w, int h) 似乎非常适合。 y 应该提供我正在寻找的值以确定高度和颜色。

以上是关于Java:复合的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Java 中的复合赋值不能捕获溢出问题?

Java:复合

java JPA复合外键

如何在java中执行复合sql查询?

java里mongodb复合查询

如何在 Java 中的 Cassandra 中注释/使用复合分区键?