涂漆方法是啥?它是如何工作的?

Posted

技术标签:

【中文标题】涂漆方法是啥?它是如何工作的?【英文标题】:what does the paint method? how does it work?涂漆方法是什么?它是如何工作的? 【发布时间】:2019-11-04 20:38:42 【问题描述】:

paint方法接收到Graphics类创建的对象作为参数后做了什么?

例如在这段代码中:

public class unaClase extends Applet
    public void paint(Graphics g)
        g.drawRect(0, 0, 400, 200);
    

尝试追踪源代码以查看其代码,从而能够理解它的作用,但它没有向我显示任何东西

我想知道是什么用它接收的参数来绘制?

PD:我知道苹果已经死了,我只是想很好地了解发生了什么,它做了什么

【问题讨论】:

小程序没有“过时”;小程序完全死了 您能更具体地说明您的要求吗?如何使用图形上下文进行绘画可能是一个非常冗长的讨论。 您是在覆盖它,而不是覆盖它。 paint() 知道该做什么,因为您通过在方法实现中添加指令告诉它该做什么:g.drawRect(0, 0, 400, 200);。这就是它的作用。 我不知道代码胶囊是什么。以下是我将如何解释绘画方法。想象一下,您的工作是在广告牌上为客户展示广告,并在广告损坏时重新展示。这基本上就是一个小程序。现在想象我是你的客户。为了让我在广告牌上显示我想要的任何东西,你给了我一张大纸和一些绘画工具(那是 Graphics 对象)。我对它们做任何我想做的事情(比如画一个矩形),然后你在广告牌上显示我在纸上(矩形)上画的东西。 如果绘图损坏,你再给我一张纸(即你用图形再次调用paint),然后我再次绘制我的矩形(或者如果我决定绘制我想绘制的任何东西别的东西),然后你在广告牌上展示我的新画。 【参考方案1】:

当我使用paint方法(如示例代码中)时,我在技术上覆盖它(除非我使用了super.paint ...),然后它的代码将是我刚刚定义的那个;所以我的问题是,paint 如何知道如何处理我正在经历的参数(图形)?

实际术语是overriding。您通常要做的第一件事是调用super.paint() 到父版本。 Graphics(或Graphics2D,它有其他方法但需要强制转换)允许使用这些方法来绘制、旋转和操作像素。它使用操作系统支持的本机方法调用在内部进行处理。

如果您要绘画,您应该在 JPanel 中进行并覆盖 paintComponent(Graphics g)。在https://docs.oracle.com/javase/tutorial/index.html查看绘画教程

【讨论】:

以上是关于涂漆方法是啥?它是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章

servlet的本质是啥,它是如何工作的?

Hashgraph,它是啥以及它是如何工作的?

Laravel 应用程序密钥 - 它是啥以及它是如何工作的?

Laravel 中的控制台路由是啥?它是如何工作的? [关闭]

Java 中的 radix 参数是啥,它是如何工作的?

setSoTimeout 的功能是啥以及它是如何工作的?