gpt4 book ai didi

Java Graphics2D 颜色问题

转载 作者:行者123 更新时间:2023-12-01 04:45:45 25 4
gpt4 key购买 nike

我已经搜索了一段时间,但未能找到我的问题的答案。

首先展示两张对比图:

方法一: method 1 http://img713.imageshack.us/img713/3558/tcg6.jpg

方法2: method 2 http://img716.imageshack.us/img716/2755/tcg7.jpg

方法 1 从未给我带来任何麻烦,但我最近发现它花费的时间太长,方法 2 解决了这个问题。

方法 1 的代码:

private void drawDefaultOrientation() {
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
int dx = Math.min(x, width - 1 - x);
int dy = Math.min(y, height - 1 - y);
if (dx < borderSize || dy < borderSize) {
inBorder(dx, dy);
}
else {
outBorder(dx, dy);
}
bufferedImage.setRGB(xOffset + x, yOffset + y, color.getRGB());
}
}
}

方法2的代码:

private void drawDefaultOrientation() {
DataBufferInt buffer = (DataBufferInt)bufferedImage.getRaster().getDataBuffer();
int[] pixelArray = buffer.getData();
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
int dx = Math.min(x, width - 1 - x);
int dy = Math.min(y, height - 1 - y);
if (dx < borderSize || dy < borderSize) {
inBorder(dx, dy);
}
else {
outBorder(dx, dy);
}
pixelArray[(xOffset + x) + ((yOffset + y) * bufferedImage.getWidth())] = color.getRGB();
}
}
}

另请注意 inBorder(dx, dy);和 outBorder(dx, dy);将颜色变量设置为具有红色、绿色、蓝色和 Alpha 值的颜色。

被调用者代码:

    new CustomRectangle(bufferedImage, 220, 90, 15, 245, 5, defaultOrientation) {
@Override
public void inBorder(final int dx, final int dy) {
setColor(new Color(red, green, blue, 255 - Math.min(dx, dy)));
}

@Override
public void outBorder(final int dx, final int dy) {
setColor(new Color(red, green, blue, 128 - Math.min(dx, dy)));
}
}.draw();

我真的很困惑为什么会出现色差。

我真的希望任何人都可以帮助我。首先我认为这与 Alpha 值有关,但正如所见,方法 2 仍然存在 alpha 变化。

问候。

最佳答案

我建议,对于“简单”的事情(包括盒子、形状、渐变等等),您可以直接使用 Java2D API。编写起来会更高效、更简单。

例如,用颜色填充图像中的矩形:

public void rectangle(Color color, float x1, float y1, float w, float h) {
Graphics2D g = bufferedImage.createGraphics();
g.setColor(color);
g.fill(new Rectangle2D.Float(x1, y1, w, h));
g.dispose(); // optional but releases the resource earlier
}

您还可以使用“g”来绘制所需数量的东西。

关于Java Graphics2D 颜色问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15882108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com