标签: graphics2d

使用DecimalFormat(强制点)和drawString()(y似乎是错误的)

两个问题合在一起,但我有一个非常简短的测试用例来证明我的问题:

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)

java drawstring graphics2d decimalformat

2
推荐指数
1
解决办法
5147
查看次数

为什么它只绘制其中一个组件?

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)

java swing graphics2d

2
推荐指数
1
解决办法
397
查看次数

Graphics2D - Graphics2D对象上的旋转形状

我有一个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?通过"旋转"我的意思是旋转围绕其中心点,我们可以定义为xy的例子.

我一直在寻找一种方法来做这件事,但找不到任何可行的方式.

有没有简单的方法来做到这一点?

java swing graphics2d

2
推荐指数
1
解决办法
5935
查看次数

Java旋转ImageBuffer失败

我试图旋转一个名为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˚它工作正常所以我想知道问题是它是图像的形状?

java swing bufferedimage graphics2d

2
推荐指数
1
解决办法
145
查看次数

如何绘制透明线?

我正在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)

但我希望这条线是半透明的.我如何实现这一目标?

java transparency line jpanel graphics2d

2
推荐指数
1
解决办法
4117
查看次数

使用图像填充矩形

使用AWT,如何将图像导入到您绘制的矩形中?我只想将背景分配给该特定矩形.

java user-interface image awt graphics2d

2
推荐指数
1
解决办法
2242
查看次数

旋转矩形并在sin波中移动它 - 使用graphics2D帮助

嗨!

我使用以前的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)

java swing rotatetransform jpanel graphics2d

2
推荐指数
1
解决办法
890
查看次数

运行时显示的小程序中的随机数会更新每个帧,或者被背景图像透支

编辑:使用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对象" - …

java random runtime awt graphics2d

2
推荐指数
1
解决办法
241
查看次数

强制完全重绘Jpanel Java2D

我的问题是我需要制作一个不断更新的GUI我得到的数据可以从数据库中更改,我在图形区域遇到了一些问题.

好吧我使用Graphics2D的Drawline和Drawstring来打印数据库中的值,这个字符串和行移动并改变值,所以我需要调用repaint(); 用一个计时器让它们在jpanel中运行,问题是repaint(); 在绘画之前没有删除背景中的旧画,但是当我完全调整所有更新时.

我知道一种清除的方法,但背景颜色也消失了,有一种方法可以更新jpanel去除旧画并保持沉闷的背景颜色?

没有更新 完善

将coordenate和标签文本更改为"AXIS Y"后(从计时器自动调用重绘) 在此输入图像描述

谢谢.

java swing awt java-2d graphics2d

2
推荐指数
1
解决办法
711
查看次数

使用CMYK颜色空间在java中写入图像

我想使用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颜色,而是具有以下内容

CMYK值

我的问题是:

  1. 我可以使用BufferedImage来写入带有CMYK色彩空间的图像吗?
  2. 如果组件值为0,0,0,1.0且alpha为1,如何使用CMYK颜色空间写入图像

请注意,我已经尝试过EPS并且工作正常,但是,在我的项目的这个阶段,我觉得使用EPS感觉不舒服.

java swing bufferedimage cmyk graphics2d

2
推荐指数
1
解决办法
1168
查看次数