两个问题合在一起,但我有一个非常简短的测试用例来证明我的问题:
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import java.text.*;
import java.util.*;
import javax.imageio.*;
public class Numbers {
public static void main(String[] args) throws IOException {
double[] numbers = { 10000.12, 20000.23, 3000.45 };
DecimalFormat format = new DecimalFormat("0.00");
format.setGroupingUsed(false);
BufferedImage image = new BufferedImage(400, 150, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = image.createGraphics();
g2d.setColor(Color.BLACK);
g2d.setBackground(Color.YELLOW);
g2d.clearRect(0, 0, image.getWidth(), image.getHeight());
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setFont(new Font(Font.SANS_SERIF,Font.BOLD, 24));
FontMetrics metrics = g2d.getFontMetrics();
for (int i = 0; i < numbers.length; i++) {
String str = format.format(numbers[i]);
System.out.println(i …Run Code Online (Sandbox Code Playgroud) package puzzle;
import java.awt.Color;
import javax.swing.*;
import java.util.*;
public class Puzzle {
Integer x = 50;
Integer y = 50;
int x2 = 100;
int y2 = 100;
int vnotx = 0;
int vnoty = 0;
float t = 0;
float t2 = 0;
JFrame frame = new JFrame();
Move m = new Move(x, y,Color.GREEN);
Move n = new Move(x,y,Color.ORANGE);
java.util.Timer timer = new java.util.Timer();
java.util.Timer timer2 = new java.util.Timer();
public Puzzle() {
frame.setUndecorated(true);
frame.setSize(400, 400);
frame.add(m);
frame.add(n);
frame.addKeyListener(new java.awt.event.KeyAdapter() …Run Code Online (Sandbox Code Playgroud) 我有一个Graphics2D用来绘制我的物体Canvas.我在它上面绘制了多个形状,Canvas并且只想转换它们中的一个(或部分).
我会尽量保持这个简单:
void render(Graphics2D g) {
... // Draw shape 1
... // Draw shape 2
... // Draw shape 3
}
Run Code Online (Sandbox Code Playgroud)
如何在保持形状1和3完好无损的情况下旋转形状2?通过"旋转"我的意思是旋转围绕其中心点,我们可以定义为x和y的例子.
我一直在寻找一种方法来做这件事,但找不到任何可行的方式.
有没有简单的方法来做到这一点?
我试图旋转一个名为pic的BufferImage的实例,当我尝试它调整大小和倾斜并裁剪图像,任何建议让它正常工作
public void rotate(double rads){
AffineTransform tx = new AffineTransform();
tx.rotate(rads,pic.getWidth()/2,pic.getHeight()/2);
AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);
pic = op.filter(pic, null);
}
Run Code Online (Sandbox Code Playgroud)
当我旋转90˚它工作正常所以我想知道问题是它是图像的形状?
我正在JPanel上画一条蓝线
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
super.paint(g2);
if (path.size() >= 2) {
BasisStroke stroke = new BasicStroke(Config.TILE_SIZE_IN_PIXEL / 3, BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL);
g2.setStroke(stroke);
g2.setPaint(Color.BLUE);
g2.setPaintMode();
for (int i = 0; i < path.size() - 1; i++) {
g2.drawLine(path.get(i).x, path.get(i).y, path.get(i + 1).x, path.get(i + 1).y);
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我希望这条线是半透明的.我如何实现这一目标?
使用AWT,如何将图像导入到您绘制的矩形中?我只想将背景分配给该特定矩形.
嗨!
我使用以前的Stackoverflow帖子有下面的代码.
我想将矩形旋转一定角度,使其在sin波中移动.
此代码也会旋转整个sin波.
我明白为什么会这样,但我不知道如何实现我的意图.
请帮忙!!!
非常感谢您抽出宝贵时间.
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Withrotation {
public static int i = 1;
public static Ticker t;
public static Repainter r;
public static int newx, newy;
public static void main(String[] args) {
final JFrame frame = new JFrame("Wavy!");
final WavyPanel wp = new WavyPanel();
frame.getContentPane().add(wp, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
t = new Ticker(wp);
r = new Repainter(wp);
frame.pack(); …Run Code Online (Sandbox Code Playgroud) 编辑:使用awt ...
我试图在基于applet的数学游戏中显示随机数,并遇到了一个问题.根据我调用方法的位置,发生以下两种情况之一:
快速插图:
private int setNumberOne() {
return rand.nextInt(11) + 2;
}
private int setNumberTwo() {
return rand.nextInt(11) + 2;
}
private int setAnswer() {
return setNumberTwo() * setNumberOne();
}
private void displayOutput() {
Graphics2D g2d = graphics();
int one = setNumberOne();
int ans = setAnswer();
setNumberTwo();
g2d.setColor(Color.WHITE);
g2d.drawString(one + " x ? = " + ans, 480, 480);
}
Run Code Online (Sandbox Code Playgroud)
在初始化方法中调用此函数会显示一个静态问题,我可以在满足特定触发器时在其他位置更新,但是更新事件会在其上方绘制其他所有内容,使其不可见.我设法看到这个工作的唯一方法是从游戏中删除其他图像进行测试.
有没有办法在applet中设置GUI元素的"优先级"?
我目前正在尝试将该displayOutput()方法包含在它自己的线程中,但我对Java并不是那么有经验,并且证明它很难解决.
我也尝试不允许后台在运行时更新,但结果是移动的游戏对象在整个屏幕上留下了痕迹.
我错过了什么?如果有人对如何正确实施这些建议有任何建议,我会很高兴听到他们的意见.
更新:"...在AWT中使用Component的paint(...)方法绘制,并使用JVM传入的Graphics对象" - …
我的问题是我需要制作一个不断更新的GUI我得到的数据可以从数据库中更改,我在图形区域遇到了一些问题.
好吧我使用Graphics2D的Drawline和Drawstring来打印数据库中的值,这个字符串和行移动并改变值,所以我需要调用repaint(); 用一个计时器让它们在jpanel中运行,问题是repaint(); 在绘画之前没有删除背景中的旧画,但是当我完全调整所有更新时.
我知道一种清除的方法,但背景颜色也消失了,有一种方法可以更新jpanel去除旧画并保持沉闷的背景颜色?
没有更新

将coordenate和标签文本更改为"AXIS Y"后(从计时器自动调用重绘)

谢谢.
我想使用CMYK颜色空间在java中编写一个图像,如下所示:
BufferedImage image= new BufferedImage(path.getBounds().width,
path.getBounds().height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = image.createGraphics();
color c = new Color(ColorSpaces.getDeviceCMYKColorSpace(), new float[]
{1.0f,1.0f,1.0f,1.0f}, 1.0f)
g2d.setPaint(c);
g2d.fill(path);
g2d.draw(path);
g2d.dispose();
Run Code Online (Sandbox Code Playgroud)
然后我使用imageIO将图像写入JPEG,但是,当转换为PDF时,生成的图像没有我在代码中提供的CMYK颜色,而是具有以下内容
我的问题是:
请注意,我已经尝试过EPS并且工作正常,但是,在我的项目的这个阶段,我觉得使用EPS感觉不舒服.
graphics2d ×10
java ×10
swing ×6
awt ×3
jpanel ×2
cmyk ×1
drawstring ×1
image ×1
java-2d ×1
line ×1
random ×1
runtime ×1
transparency ×1