标签: java-2d

Java2d:JPanel设置背景颜色不起作用

我有以下代码:

public VizCanvas(){
    {
        this.setBackground(Color.black);
        this.setSize(400,400);
    }
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,并在黑色背景下显示面板.但是当我实现不做任何操作的paint方法时,颜色会变为默认颜色,即灰色.

我试图设置graphics.setColor()但它没有帮助.

java graphics java-2d

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

计算图表应用程序“条形矩形”的比例因子

我有一个整数值数组

String[] values={3100,7500,8000,4200,88000,71000,32000};
Run Code Online (Sandbox Code Playgroud)

需要缩放到 my 的已知高度JComponent,问题是如何将这些值缩放到例如 h=600px?

这是一张图片,只是为了更清楚地说明我想要实现的目标: 在此处输入图片说明

谢谢

java graphics java-2d

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

使用动态形状进行鼠标检测

基本上我正在构建一张世界地图.我知道如何有一个方形点击区域.但我想做到这一点,我可以将这些国家放在一起,并能够点击该国家.现在很明显我不能使用方形点击区域因为我有重叠的点击区域.我可以通过查看每个像素的透明度来做到这一点吗?即便如此,我不知道该怎么做?

java image awt click java-2d

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

java图形重绘方法实际上是如何工作的

我刚刚开始使用java 2d图形应用程序,在我的研究重绘是重绘我们的图形浪费了大量资源.但是我想知道什么重绘是什么,有效以及如何有效地使用它,为我画布上的许多可移动动态对象安全快速地线程?

java swing java-2d repaint graphics2d

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

在Java 2D中裁剪常规路径

我有随机点的java通用路径.我想裁剪它的一侧并获得直线. 作物一般路径

怎么做?

java 2d awt java-2d

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

在Java swing中围绕点绘制和旋转多边形

只是试图在Java中绘制多个未填充的三角形旋转中心点.绘制一个三角形,将点旋转一定的半径,然后绘制另一个三角形.

int rad = 10 //Radius between the triangles
int num = 20 //Number of triangles

for (int i = 0; i < num; i++){
// (250,250) would be the center
int[] xPoints = (250,175,325) //X points of the first triangle 
int[] yPoints = (250,100,100) //Y points of the first triangle
g.drawPolygon(xPoints,yPoints,3); //Paint the shape
}
Run Code Online (Sandbox Code Playgroud)

当然我的代码只打印第一个三角形,因为我不确定如何旋转这些点.我四处搜寻并发现了一些触发器,但我并不理解它.是否有一种简单的方法来旋转每个点?谢谢.

java swing rotation java-2d

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

图形对象上的MouseListener

我感觉非常愚蠢.但是为什么这段简单的代码不会改变椭圆的颜色呢?

基本上我想在椭圆上添加一个鼠标监听器 - 一个图形对象.当鼠标光标为椭圆形时,椭圆会改变其颜色.但是这段代码根本没有改变......这段代码仅供测试.

public class Help extends JFrame{

    public static void main(String [] agrs){
        Help h = new Help();
        h.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        h.add(new Help_Option());
        h.setSize(2000, 1000);
        h.setVisible(true);
    }
}

class Help_Option extends JComponent implements MouseListener{
    Ellipse2D ellipse = new Ellipse2D.Double(0, 0, 1000, 500);
    Color c = Color.BLACK;    

    public Help_Option(){
        this.addMouseListener(this);
    }

    public void paintComponent(Graphics g){
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;

        g2d.setColor(Color.BLUE);
        g2d.draw(ellipse);

        g2d.setColor(c);
        g2d.fill(ellipse);        
    }

    public void setColor(Color c){
        this.c = c;
    }

    @Override
    public void mouseClicked(MouseEvent e) {

    } …
Run Code Online (Sandbox Code Playgroud)

java graphics swing java-2d mouselistener

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

Java 2D,在X和Y轴上具有相同数量的平移导致不同的结果

我只是在玩Java 2D周末项目.我试图完成的只是在远离原点的位置50,50处加载和绘制图像.现在当我尝试做到这一点时,用

g2d.drawImage(imageLeft, 50, 50, 200, 200, null);
Run Code Online (Sandbox Code Playgroud)

然后我得到以下内容:

坦率地说,这让我感到困惑.为什么翻译的x部分与y部分的缩放比例不同?这里发生了什么?必须是一个明显的初学者的错误,但我无法弄清楚这种行为对我的生活的原因;-)

我用来绘制图像的完整代码是:

final IsogenWindow window = new IsogenWindow();
final BufferedImage imageLeft = loadImage(new File(getClass().getResource("/texture/tile1.png").toURI()));
final Graphics2D g2d = Graphics2D)window.getGraphics();

window.setSize(1000, 1000);
window.setVisible(true);

g2d.drawImage(imageLeft, 50, 50, 200, 200, null);
Run Code Online (Sandbox Code Playgroud)

编辑1:为了尝试DontRelaX的建议,我更改了我的代码,因此面板被添加到JFrame并且其Graphic2D对象用于绘图:

getContentPane().setLayout(null);
this.renderPanel = new JPanel();
getContentPane().add(renderPanel);
final Graphics2D g2d = (Graphics2D)renderPanel.getGraphics();
...
g2d.drawImage(imageLeft, 50, 50, 200, 200, null);
Run Code Online (Sandbox Code Playgroud)

不幸的是,结果仍然相同.但我认为DontRelaX走在正确的轨道上.还有什么建议?

编辑2:基本上DontRelaX的回答是正确的.我确实不使用renderPanel的Graphics2D,而是使用JFrame的Graphics2D对象.

干杯,nanoquack

java swing awt java-2d graphics2d

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

如何改变GradientPaint的方向?

我正在尝试绘制一个从红色到蓝色的渐变矩形.我有以下代码:

g2d.setPaint(new GradientPaint(0, 0, Color.RED, 1000, 1000, Color.BLUE));
g2d.fillRect(0, 0, 1000, 1000); 
Run Code Online (Sandbox Code Playgroud)

这很有效.然而,渐变的方向是对角线,从矩形的左上角到右下角(另一种看待这个的方式是渐变跟随线 y=-x + windowHeight)

我希望我的渐变从上到下.所以矩形的整个顶部是红色的,整个底部是蓝色的.换句话说,颜色应该只随y坐标变化,给定任何y =点线,颜色在该线上应该是均匀的.

我还包括以下图片,以便大致了解我要做的事情: 在此输入图像描述

我怎么能做到这一点?

在此输入图像描述

java swing awt java-2d linear-gradients

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

绘制具有给定厚度,位置和半径的环.(的Java2D)

我需要绘制一个具有给定厚度的环,看起来像这样:

在此输入图像描述

中心必须是透明的,这样它就不会覆盖以前绘制的形状.(或其他戒指)我尝试过这样的事情:

//g is a Graphics2D object
g.setColor(Color.RED);
g.drawOval(x,y,width,height);
g.setColor(Color.WHITE);
g.drawOval(x+thickness,y+thickness,width-2*thickness,height-2*thickness);
Run Code Online (Sandbox Code Playgroud)

它绘制了一个令人满意的戒指,但它涵盖了其他形状; 内部是白色的,不透明.如何修改/重写我的代码,以便它不会这样做?

java swing ellipse java-2d graphics2d

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