gpt4 book ai didi

java - 使用 JScrollPane 进行滚动和非常大且缩放的自定义绘图

转载 作者:行者123 更新时间:2023-12-01 12:49:49 24 4
gpt4 key购买 nike

我正在从事一个个人项目。 a circuit simulator if you are interested 。在我的项目中,我使用 JPanel 来绘制内容。我可以使用 AffineTransformations 移动它并缩放它。每次调用 Paint() 时,我都会绘制用户应该看到的绘图区域。绘图可以很大(我对它的大小没有限制)。我使用一个矩形来跟踪绘图的可见区域,并在 JPanelgraphics2d 中绘制它。

现在我想添加滚动条来移动我的视口(viewport),我认为 JScrollPane 可能很有用。我见过很多讨论使用 JPanel 和 JScrollPane 来滚动简单内容的主题。你看的第一个是this one ,但我不喜欢这个解决方案,因为滚动 Pane 确实滚动了 JPanel。在所有示例中,我应该绘制所有面板区域!我只绘制面板的可见区域,因为这非常耗时。

所以,我的问题是:如何使用滚动 Pane 来移动我的自定义视口(viewport)并反射(reflect)更改(我不想滚动用于绘图的 jpanel)?或者我应该使用 JPanel 和两个简单​​的 JScrollbars?

我找不到从头开始实现 Scrollable 接口(interface)的简单指南。所有教程都从 JPanel 或 JLabel 开始

感谢您的建议!!

(对不起我的英语)

最佳答案

假设您使用 paintComponent 来绘制内容,您可以检查 Graphics 剪辑边界。这将告诉您哪些区域需要重新绘制,当从 JScrollPane 中查看时,滚动 Pane 将减少它想要重新绘制的区域以满足其可视区域。

重要的是要记住,剪切矩形代表的区域是"new"或“更改”区域,而不是可视区域,这是出于优化原因......

关于java - 使用 JScrollPane 进行滚动和非常大且缩放的自定义绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24319327/

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