gpt4 book ai didi

java - 如何在固定大小的 Canvas 上显示整个图像?

转载 作者:行者123 更新时间:2023-11-29 05:49:19 25 4
gpt4 key购买 nike

我正在使用 Jtree 作为图像列表并显示所选图像,但问题是如果图像尺寸大于 Canvas 尺寸(即 300 X 300)它只显示图像的左上角,如何显示整个图像固定大小 Canvas 中的图像?

我正在使用以下代码:

private void displayImage(File file) {

try
{
BufferedImage image = ImageIO.read(file);
ta.Picture = image;
}
catch (Exception e)
{}

Graphics g = ta.imageCanvas.getGraphics();
g.clearRect(0, 0, 300, 300);
g.drawImage(ta.Picture, 00, 00, this);

} // displayImage

public void valueChanged(TreeSelectionEvent e)
{
// TODO Auto-generated method stub
FileTreeNode node = (FileTreeNode) tree.getLastSelectedPathComponent();

if (node.isLeaf())
{

currentFile = node.file;

File ff = new File("F:/images_blue/" + currentFile.getName());
displayImage(ff);

} else
currentFile = null;

}

最佳答案

我只想指出...

Graphics g = ta.imageCanvas.getGraphics();
g.clearRect(0, 0, 300, 300);
g.drawImage(ta.Picture, 00, 00, this);

真是个坏主意。

getGraphics 可能会返回 null,充其量只是上一个重绘周期的快照,可能会在下一个绘制周期失效或取消引用。

您应该从 JPanel 之类的东西扩展并覆盖 paintComponent 方法。这将允许您提供 getter 和 setter 作为图像管理的一部分,并允许您以自包含和可重用的方式生成缩放图像

你 checkout Perfoming Custom Painting给我的信息

而且,根据我的评论,您可能想查看这些先前的问题以获取示例

关于java - 如何在固定大小的 Canvas 上显示整个图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14577441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com