当前位置: 首页 > 知识库问答 >
问题:

在paintComponent()外部绘制形状(java)

燕禄
2023-03-14

我是java图形的新手,很难掌握从一个方法(绘制组件())绘制所有图形的整个概念。我只是很好奇,看看我们是否可以在绘制组件之外绘制图形。这可能吗?是否可以在main方法中写一行,如:fillRect(100,100, 500,400);并让它绘制一个矩形?如果可能,是否根据Java常规?

基本上,我想问的是,你是否可以在paintComponent类之外绘制图形,这是常规的吗。

共有1个答案

巫马承德
2023-03-14

您可以绘制缓冲区图像,但如果希望在屏幕上绘制,通常需要使用绘制组件。您可以将传递到paintComponent中的Graphics的实例传递给其他可以执行更复杂操作的类,但您不应该维护该实例的引用,也不应该尝试在绘制循环上下文之外进行绘制。

有关更多详细信息,请参见AWT和Swing中的绘制和执行自定义绘制

如果您需要更多地控制油漆过程,您还可以使用BufferStrategy

有关更多详细信息,请参阅缓冲区策略和缓冲区能力

您应该知道的事情:

  • Swing使用“被动渲染”方法,这意味着当绘制系统决定需要进行绘制时,会进行绘制。这就是为什么您必须在绘制周期的上下文中执行绘制(即-在paintComponent方法中)

 类似资料:
  • 通过 Entity 添加形状 先来看一个添加立方体的例子 var viewer = new Cesium.Viewer('cesiumContainer'); var redBox = viewer.entities.add({ name : 'Red box with black outline', position: Cesium.Cartesian3.fromDegrees(-107

  • 问题内容: 我创建了此代码,当我 在JForm上选择单选按钮时,该代码应该绘制某些内容,我已经使用NetBeans创建了GUI。 当我选择单选按钮时,没有任何反应。 一段时间以来,我一直在试图找出问题所在,但仍然找不到解决方案,这就是我来 这里的原因。如果有人发现错误,我将不胜感激。 问题答案: 我在您的代码中看到了一些问题: 您正在扩展JFrame,您不应该这样做,因为可以将其读DrawShap

  • 注意:使用形状工具,可以轻松地创建按钮、导航栏以及其他在网页上使用的项目。有关 Photoshop 中所有绘图功能的概述,请参阅关于绘图。 在形状图层上创建形状 选择一个形状工具或钢笔工具。确保从选项栏的菜单中选择“形状”。 若要选取形状的颜色,请在选项栏中单击色板,然后从拾色器中选取一种颜色。 (可选)在选项栏中设置工具选项。单击形状按钮旁边的反向箭头以查看每个工具的其他选项。(请参阅形状工具选

  • 注意:使用形状工具,可以轻松地创建按钮、导航栏以及其他在网页上使用的项目。有关 Photoshop 中所有绘图功能的概述,请参阅关于绘图。 在形状图层上创建形状 选择一个形状工具或钢笔工具。确保从选项栏的菜单中选择“形状”。 若要选取形状的颜色,请在选项栏中单击色板,然后从拾色器中选取一种颜色。 (可选)在选项栏中设置工具选项。单击形状按钮旁边的反向箭头以查看每个工具的其他选项。(请参阅形状工具选

  • 我在使用 Netbeans GUI 添加的 JPanel 中绘制形状时遇到问题。现在,我不知道在哪里添加代码以在该 JPanel 内部绘制圆,以及如何在现在空置的 JPanel 中插入和调用它,等待绘制此形状。我已经将目标 JPanel 设置为流布局。Netbeans 设计器创建了一个大类,其中我用这个 JPanel 拥有整个框架,我想把它保留在其中,因为我无法以任何其他方式添加它,因为设计器不允

  • 所以我在只用线绘制形状时遇到了一个大问题。假设我从屏幕中间的一个点开始画一条线,然后以100个像素的距离向前画,角度为0,然后我用角度72度画另一条相同长度的线,以此类推,直到360度。它应该给我一个完美的五边形,一条线结束,另一条线从那个点开始,但是线在末端不相交,它非常适合角度为0/90/180/270的正方形,但我需要让它适用于每个形状,甚至是圆。我用这个东西来计算: 其中_cosinuse