gpt4 book ai didi

java - 在有限的空间中显示图像的特定部分?

转载 作者:行者123 更新时间:2023-12-04 05:33:06 24 4
gpt4 key购买 nike

我有一个 100x100 的框架和一个 400x400 的图像,我在整个框架上有一个分层 Pane ,在分层 Pane 内有一个图像。您可以注意到图像比框架大,因此只会显示图像的一部分,即图像的左上角部分。假设图像中有一个人,X=32,y=40,宽度 = 10,高度 = 10(基本上是一个矩形)w.r.t.框架。
问题

  • 图像是 400x400 对吗?这意味着在运行时我只能看到图像的 100x100 部分,而显示的图像部分是左上角的部分吗?但是假设我想展示位于 350x350 w.r.t. 的建筑物。图像,那么我该怎么做(因为它位于图像的底部,因此不会显示)?
  • 假设第一个问题已经解决,然后假设有一个 350x350 的建筑物,宽度 = 20,高度 = 20 w.r.t 'frame'。现在,当我在运行时显示图像(现在图像的底部可见,假设问题 1 已解决)建筑物的坐标 w.r.t.框架不应改变,即它们应保持 350x350 w.r.t.框架。
  • 最佳答案

    第 1 点)我猜你是在 JPanel 中添加图像然后进入JFrame或者把图片变成JPanel进入 JScrollPane最终落入 JFrame . JPanel s 和 JScrollPane s 都支持通过使用 #scrollRectToVisible 进行程序化滚动.

    这是 scrollRectToVisible 的(某种)工作示例

    JPanel panel = new JPanel();
    JPanel panel2 = new JPanel();
    panel2.setPreferredSize(new Dimension(200, 11000));
    SpringLayout layout = new SpringLayout();
    panel2.setLayout(layout);
    for (int i = 0; i < 100; i++) {
    JLabel textField = new JLabel();
    textField.setText("textfield number " + i);
    textField.setPreferredSize(new Dimension(150, 100));
    layout.putConstraint(SpringLayout.NORTH, textField, i * 110, SpringLayout.NORTH, panel2);

    panel2.add(textField);
    }
    JScrollPane scrollPane = new JScrollPane(panel2, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    scrollPane.setPreferredSize(new Dimension(200, 500));

    panel2.scrollRectToVisible(new Rectangle(0, 800, 150, 100));

    panel.add(scrollPane);

    将面板变量添加到 JFrame 中,您就可以运行此代码了。另外,请注意,这只是示例代码,而不是编写代码以将组件添加到面板的实际方式:P

    第 2 点)我仍然没有完全理解这个查询,所以我会分两部分给你一个答案。
    a) 我不明白为什么相对计算很重要?你能试试我提供的样本,看看它是否能满足需要?如果不是,请阅读选项 b
    b) Rectangle对象有一个 setLocation(int, int) (引用: Java documentation )你应该玩玩。我无法给您更准确的答案或代码示例,因为我不完全了解您要做什么,而且我没有可以使用的代码示例。

    关于java - 在有限的空间中显示图像的特定部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12340251/

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