- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
板级:
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.awt.geom.Ellipse2D;
import javax.swing.JPanel;
public class Board extends JPanel {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
super.setBackground(Color.BLACK);
drawDonut(g, Color.WHITE);
}
private void drawDonut(Graphics g, Color c) {
Graphics2D g2d = (Graphics2D) g;
RenderingHints rh
= new RenderingHints(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
rh.put(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
g2d.setRenderingHints(rh);
Dimension size = getSize();
double w = size.getWidth();
double h = size.getHeight();
Ellipse2D e = new Ellipse2D.Double(0, 0, 160, 260);
g2d.setStroke(new BasicStroke(3));
//RainbowColors rb = new RainbowColors(6);
for (double deg = 0; deg < 360; deg += 5) {
AffineTransform at
= AffineTransform.getTranslateInstance(w/2, h/2);
at.rotate(Math.toRadians(deg));
g2d.setColor(Color.RED/*rb.getNewColor()*/);
g2d.draw(at.createTransformedShape(e));
}
}
}
当我启动这个程序时,我的屏幕上首先出现白色圆圈,其余为紫色。我做了一些调试,并在控制台程序中从“RainbowColors”类的构造函数写入了两次消息
但是该对象只生成一次。
最佳答案
给定正确的颜色生成逻辑(RainbowColors
类),Board
类就可以正常工作:
class Board extends JPanel {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
super.setBackground(Color.BLACK);
drawDonut(g, Color.WHITE);
}
private void drawDonut(Graphics g, Color c) {
Graphics2D g2d = (Graphics2D) g;
RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
rh.put(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
g2d.setRenderingHints(rh);
Dimension size = getSize();
double w = size.getWidth();
double h = size.getHeight();
Ellipse2D e = new Ellipse2D.Double(0, 0, 160, 260);
g2d.setStroke(new BasicStroke(3));
double range = 360, step = 5;
RainbowColors rb = new RainbowColors((int)(range/step));
for (double deg = 0; deg < range; deg += step) {
AffineTransform at = AffineTransform.getTranslateInstance(w/2, h/2);
at.rotate(Math.toRadians(deg));
g2d.setColor(rb.getNewColor());
g2d.draw(at.createTransformedShape(e));
}
}
}
class RainbowColors {
private static final int DEFAULT_NUMBER_OF_COLORS = 100;
private final int numberOfColors;
private int index;
private Color[] colors;
RainbowColors() {
this(DEFAULT_NUMBER_OF_COLORS);
}
RainbowColors(int numberOfColors) {
this.numberOfColors = numberOfColors > 0 ? numberOfColors : DEFAULT_NUMBER_OF_COLORS;
makeColors();
}
//based on https://stackoverflow.com/a/22973823/3992939
private void makeColors() {
int range = numberOfColors / 6; //6 for loops, each changes R G or B
int step = 255/range;
List<Color> colorsList = new ArrayList<>();
for (int r=0; r< range; r++) {
colorsList.add(new Color(r*step, 255, 0));
}
for (int g=range; g>0; g--) {
colorsList.add(new Color( 255, g*step, 0));
}
for (int b=0; b<range; b++) {
colorsList.add(new Color( 255, 0, b*step));
}
for (int r=range; r>0; r--) {
colorsList.add(new Color(r*step, 0, 255));
}
for (int g=0; g<range; g++) {
colorsList.add(new Color( 0, g*step, 255));
}
for (int b=range; b>0; b--) {
colorsList.add(new Color( 0, 255, b*step));
}
colors = colorsList.toArray(new Color[colorsList.size()]);
}
Color getNewColor() {
index = index >= colors.length ? 0 : index;
return colors[index++];
}
}
可以从 here 复制 mcve .
关于java - 尝试划分颜色来绘制彩虹 donut ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54952512/
我有以下问题:写一个网页,上面有一个使用渐变颜色构建的彩虹。彩虹应倾斜一定 Angular (不应完全水平),左侧彩虹的宽度应小于右侧彩虹的宽度。 我不知道如何做宽度的部分。谁能帮帮我? #grad1
我只想使用 CSS 来创建彩虹。以下是所需内容的图片。 这是我的代码(到目前为止): * { margin: 0; padding: 0; } #r { height: 80vw; w
伴随每年 LGBT 骄傲月的到来,各大品牌都会纷纷站出来为他们推出 “Pride” 系列产品,以此表示支持。 IT之家昨日报道,苹果watchOS 6.2.5 Beta5新增4款彩虹表盘。而就
与这个问题相关 css rainbow built using gradient colors 有没有办法通过使用多个 div 而不是一个来做到这一点? 您可能会问,为什么只用一个就可以做到这一点,出
有没有一种方法可以在 rainbows/unicorn 中同时启动 faye 和 rails 应用程序。 现在我正在使用 rainbows 启动 faye/private_pub 应用程序,但也想用它
我尝试使用 matplotlib 库绘制梁的应力。 我已经使用公式计算并绘制了它作为示例: 如图 1 所示,您会看到绿色光束在元素 3 和元素 8 处具有更大的应力,因此如果我用彩虹渐变填充颜色,蓝色
我是一名优秀的程序员,十分优秀!