放大画线
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;
}
}
我猜你的问题是绘制线条的代码采用了正常比例。也就是说,无论比例因子是多少,您总是将线值增加相同的量。
我建议更好的方法是:
- 创建一个缓冲图像
- 将您的原始图像绘制到 BufferedImage 上
- 在 BufferedImage 上画线
- 现在在 paintComponent() 方法中,您只需缩放 BufferedImage。无需任何代码重新绘制线条。
我有一张图片,我在上面画了一些线。当我在这个面板上使用缩放时,只有图像改变了它的大小(如果我到达图像的大尺寸,在我的情况下宽度 = 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;
}
}
我猜你的问题是绘制线条的代码采用了正常比例。也就是说,无论比例因子是多少,您总是将线值增加相同的量。
我建议更好的方法是:
- 创建一个缓冲图像
- 将您的原始图像绘制到 BufferedImage 上
- 在 BufferedImage 上画线
- 现在在 paintComponent() 方法中,您只需缩放 BufferedImage。无需任何代码重新绘制线条。