juce::Colours 具体样式参考

        虽然可以用ColourId来定位到非常准确的颜色,但ID值写在代码中就成了魔鬼数字。如果再定义一下,还不如直接用已经定义的,基本够用:

cpp主要代码:

MainComponent::MainComponent()
{
    setSize (1800, 1200);

    colourBlocks.add({"black               ", juce::Colours::black               });
    colourBlocks.add({"navy                ", juce::Colours::navy                });
    colourBlocks.add({"darkblue            ", juce::Colours::darkblue            });
...
    colourBlocks.add({"lightyellow         ", juce::Colours::lightyellow         });
    colourBlocks.add({"ivory               ", juce::Colours::ivory               });
    colourBlocks.add({"white               ", juce::Colours::white               });
}

void MainComponent::paint (juce::Graphics& g)
{
    // (Our component is opaque, so we must completely fill the background with a solid colour)
    // g.fillAll (getLookAndFeel().findColour (juce::ResizableWindow::backgroundColourId));

    // g.setFont (juce::Font (16.0f));
    g.setColour (juce::Colours::white);
    g.fillAll();

    int blockWidth = getWidth() / 15; // 假设每行有15个颜色块
    int blockHeight = getHeight() / 10; // 假设每列有10个颜色块

    for (int i = 0; i < colourBlocks.size(); ++i)
    {
        int row = i % 15;
        int col = i / 15;
        int x = row * blockWidth;
        int y = col * blockHeight;

        if (row < 15 && col < 10)
        {
            g.setColour(colourBlocks[i].colour);
            g.fillRect(x, y, blockWidth, blockHeight);

            if (colourBlocks[i].name.contains("black") || colourBlocks[i].name.contains("dark") ||
                colourBlocks[i].name.contains("night") || colourBlocks[i].name.contains("navy") ||
                colourBlocks[i].name.contains("indigo") || colourBlocks[i].name.contains("maroon") )
            {
                g.setColour(juce::Colours::white);
            }
            else
            {
                g.setColour(juce::Colours::black);
            }

            g.drawMultiLineText(colourBlocks[i].name, x + 5, y + (blockHeight / 2), blockWidth - 2, 20, juce::Justification::centred);
        }
    }
}

.h主要修改:

class MainComponent  : public juce::Component
{
public:
    //==============================================================================
    MainComponent();
    ~MainComponent() override;

    //==============================================================================
    void paint (juce::Graphics&) override;
    void resized() override;

private:
    //==============================================================================
    // Your private member variables go here...

    struct ColourBlock
    {
        juce::String name;
        juce::Colour colour;
    };

    juce::Array<ColourBlock> colourBlocks;
    JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainComponent)
};

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值