gpt4 book ai didi

java - 如何线性缩放我的像素着色?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:10:50 24 4
gpt4 key购买 nike

所以我有一个我正在处理的类(class)项目,你必须创建一个用圆圈填充的 GUI 框,除了屏幕的中间 50% 不能用圆圈填充。此外,每个圆圈的红色值从屏幕的顶部到底部线性缩放,顶部为 0,底部为 255。它应该是这样的:

这是我的。我尝试做 255/500(500 是高度)以获得比例因子,然后我将使用该比例因子将我的所有 y 坐标乘以以获得指定的红色值并且它有效。 255/500 的答案是 0.51,当我使用 0.51 而不是 y * (255/getHeight());有效。但是,我需要它适用于任何尺寸的框架,因此 0.51 不起作用。由于某种原因,y * (255/getHeight()) 不起作用,它似乎返回 0,因为圆圈是各种深浅不一的蓝色和绿色。我该怎么做才能解决这个问题?

我的代码:

public class NewJComponent1 extends JComponent {
public void paintComponent(Graphics g) {
int count = 0;
int diameter = 0;
Random rand = new Random();

while (count < 5000) {
int x = rand.nextInt(getWidth() + 1);
int y = rand.nextInt(getHeight() + 1);
int greenValue = rand.nextInt(256);
int blueValue = rand.nextInt(256);
diameter = rand.nextInt(21) + 10;

int redValue = y * (255 / getHeight());
Color random = new Color (redValue, greenValue, blueValue);

if ((x < (getWidth() / 4) && y <= (getHeight() - diameter))
|| ((x > (getWidth() * .75) && (x < getWidth() - diameter)) && y <= (getHeight() - diameter))
|| (x <= (getWidth() - diameter) && y < (getHeight() / 4))
|| (x <= (getWidth() - diameter) && ((y > (getHeight() * .75)) && (y <= getHeight() - diameter)))){

g.setColor(random);
g.fillOval(x, y, diameter, diameter);
count++;
}
}
System.out.println(getHeight());
System.out.println(getWidth());
}
}

我尝试了 redValue 代码的各种迭代、交换顺序、制作一个 double 类型并将类型转换为 int 以及各种其他操作,但我无法让它工作。我敢肯定这是一个小错误,把一切都搞砸了,但无论如何还是感谢你的帮助。我正在使用 Android Studio,不确定这是否真的会影响任何东西。

最佳答案

替换这一行

int redValue = y * (255 / getHeight());

int redValue = (int) Math.round(y * (255.0 / (double) getHeight()));

只是将 redValue 更改为 double 不会改变 255/getHeight() 是整数除法的事实。

关于java - 如何线性缩放我的像素着色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28684658/

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