Hi, I noticed that the Paint function in a Component is constantly called by default, even when there is nothing changed. Is there a way to disable this and only call repaint() when necessary?
Or is there a reason why the Paint function needs to be called all the time?
here is an example from the JUCE examples folder:
class HelloWorldDemo : public Component
{
public:
//==============================================================================
HelloWorldDemo()
{
addAndMakeVisible (helloWorldLabel);
helloWorldLabel.setFont (Font (40.00f, Font::bold));
helloWorldLabel.setJustificationType (Justification::centred);
helloWorldLabel.setEditable (false, false, false);
helloWorldLabel.setColour (Label::textColourId, Colours::black);
helloWorldLabel.setColour (TextEditor::textColourId, Colours::black);
helloWorldLabel.setColour (TextEditor::backgroundColourId, Colour (0x00000000));
addAndMakeVisible (quitButton);
quitButton.onClick = [] { JUCEApplication::quit(); };
setSize (600, 300);
}
//==============================================================================
void paint (Graphics& g) override
{
g.fillAll (Colour (0xffc1d0ff));
g.setColour (Colours::white);
g.fillPath (internalPath);
g.setColour (Colour (0xff6f6f6f));
g.strokePath (internalPath, PathStrokeType (5.200f));
}
void resized() override
{
helloWorldLabel.setBounds (152, 80, 296, 48);
quitButton.setBounds (getWidth() - 176, getHeight() - 60, 120, 32);
internalPath.clear();
internalPath.startNewSubPath (136.0f, 80.0f);
internalPath.quadraticTo (176.0f, 24.0f, 328.0f, 32.0f);
internalPath.quadraticTo (472.0f, 40.0f, 472.0f, 104.0f);
internalPath.quadraticTo (472.0f, 192.0f, 232.0f, 176.0f);
internalPath.lineTo (184.0f, 216.0f);
internalPath.lineTo (200.0f, 168.0f);
internalPath.quadraticTo (96.0f, 136.0f, 136.0f, 80.0f);
internalPath.closeSubPath();
}
private:
//==============================================================================
Label helloWorldLabel { {}, TRANS("Hello World!") };
TextButton quitButton { TRANS("Quit") };
Path internalPath;
//==============================================================================
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (HelloWorldDemo)
};