放大画线

Zoom on drawline

我有一张图片,我在上面画了一些线。当我在这个面板上使用缩放时,只有图像改变了它的大小(如果我到达图像的大尺寸,在我的情况下宽度 = 5550 和高度 = 7800 那条线消失)。

如何对图像和绘制的线条使用缩放功能?

代码来自这个网站:https://coderanch.com/t/338284/java/zoom-zoom-picture-swing

我所做的是在 class ImagePanel 中放置一个函数 draw 并在函数 paintComponent() 中调用它。

这是我的代码:

 public void draw(Graphics2D g) {
int val1=127, val2= 65;
    for(int i=1; i<20; i++) {
        g.setStroke(new BasicStroke(10)); 
        g.setColor(Color.black);
        g.drawLine(val1, val2, val1+10, val2+20);
        val1+=10;
        val2+=20;
    }
}
 public void draw(Graphics2D g) {
int val1=127, val2= 65;
    for(int i=1; i<20; i++) {
        g.setStroke(new BasicStroke(5)); 
        g.setColor(Color.red);
        g.drawLine(val1, val2, val1+10, val2+20);
        val1+=10;
        val2+=20;
    }
}

我猜你的问题是绘制线条的代码采用了正常比例。也就是说,无论比例因子是多少,您总是将线值增加相同的量。

我建议更好的方法是:

  1. 创建一个缓冲图像
  2. 将您的原始图像绘制到 BufferedImage 上
  3. 在 BufferedImage 上画线
  4. 现在在 paintComponent() 方法中,您只需缩放 BufferedImage。无需任何代码重新绘制线条。