【问题标题】:Java Cross Hatching TextureJava 交叉影线纹理
【发布时间】:2010-10-22 03:23:06
【问题描述】:

知道如何在 Java 中重新创建交叉哈希纹理吗?下面的 C# 代码显示了如何为 .NET 框架完成此操作。 Java sn-p 很接近,但我无法将线条正确旋转 45 度。

C#

HatchBrush crossHatch =
        new HatchBrush(HatchStyle.Cross, somecolor, somecolor);

Java

BufferedImage bufferedImage =
        new BufferedImage(5, 5, BufferedImage.TYPE_INT_ARGB);

Graphics2D g2 = bufferedImage.createGraphics();

g2.setColor(Color.BLUE);
g2.fillRect(0, 0, 5, 5);
g2.setColor(pinColor);
g2.fillOval(0, 0, 5, 5);

// paint with the texturing brush
Rectangle2D rect = new Rectangle2D.Double(0, 0, 5, 5);
g2d.setPaint(new TexturePaint(bufferedImage, rect));
g2d.fill(shape);

提前致谢。

【问题讨论】:

    标签: java graphics rendering


    【解决方案1】:

    这是一个应该以 5 像素间隔交叉影线:

    BufferedImage bufferedImage =
            new BufferedImage(5, 5, BufferedImage.TYPE_INT_ARGB);
    
    Graphics2D g2 = bufferedImage.createGraphics();
    g2.setColor(backColor);
    g2.fillRect(0, 0, 5, 5);
    g2.setColor(stripeColor);
    g2.drawLine(0, 0, 5, 5); // \
    g2.drawLine(0, 5, 5, 0); // /
    
    // paint with the texturing brush
    Rectangle2D rect = new Rectangle2D.Double(0, 0, 5, 5);
    g2d.setPaint(new TexturePaint(bufferedImage, rect));
    g2d.fill(shape);
    

    【讨论】:

    • 上面的代码可以按照 OP 的要求进行交叉影线。但是为了使普通/阴影线在单元格之间连续,我必须将“drawLine(0,5,5,0)”更改为“drawLine(-1,5,5,-1)”。
    猜你喜欢
    • 1970-01-01
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 2022-01-21
    • 2015-07-12
    相关资源
    最近更新 更多