我对 Java 图形很陌生,很难掌握从一种方法(paintComponent ())绘制所有图形的整个概念。我只是好奇我们是否可以在 PaintComponent 之外绘制图形。这可能吗?是否可以在 main 方法中写一行: 填充矩形(100,100, 500,400); 并让它画一个矩形? 如果可以的话,按照Java是约定俗成的吗?
基本上,我问是否可以在paintComponent类之外绘制图形,并且它是否是常规的。
最佳答案
您可以绘制到BufferedImage
,但如果您希望将其绘制在屏幕上,那么通常您需要使用paintComponent
。您可以将传入 paintComponent
的 Graphics
实例传递给可以执行更复杂操作的其他类,但您永远不应该维护该实例的引用或尝试在绘制周期上下文之外进行绘制。
参见Painting in AWT and Swing和Performing Custom Painting了解更多详情
如果您需要对绘制过程进行更多控制,您还可以使用BufferStrategy
参见BufferStrategy and BufferCapabilities了解更多详情
你应该知道的事情:
- Swing 使用“被动渲染”方法,这意味着当绘制系统决定需要完成绘制时,就会发生绘制。这就是为什么您必须在绘制周期的上下文中执行绘制(即在
paintComponent
方法中) BufferStrategy
使用“主动渲染”方法,使您可以完全控制绘制过程,但它无法绘制 Swing 组件
关于java - 在 PaintComponent() 之外绘制形状 (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55192386/