#pragma once
#include
using namespace dl;
class UIGfx : public UI::Scene
{
public:
UIGfx()
{
_panel = g_ui->CreatePanel();
_panel->SetPosScale({ 0.0f, 0.0f });
_panel->SetPosPixel(POS_CONTENT);
_panel->SetAutoRun(false);
UI::Panel* panel_menu = g_ui->CreatePanel();
panel_menu->SetLocator(createLocatorX(128, 4));
g_ui->SetPanelParent(panel_menu, _panel);
{
UI::ButtonSprite* btn = g_ui->CreateButtonSpriteDefault(
UI::ButtonStyle::LONG);
btn->SetMode(UI::ButtonMode::RADIO);
btn->SetString("点(dot)");
panel_menu->Add(btn);
}
{
UI::ButtonSprite* btn = g_ui->CreateButtonSpriteDefault(
UI::ButtonStyle::LONG);
btn->SetMode(UI::ButtonMode::RADIO);
btn->SetString("线(line)");
panel_menu->Add(btn);
}
{
UI::ButtonSprite* btn = g_ui->CreateButtonSpriteDefault(
UI::ButtonStyle::LONG);
btn->SetMode(UI::ButtonMode::RADIO);
btn->SetString("三角形(triangle)");
panel_menu->Add(btn);
}
{
UI::ButtonSprite* btn = g_ui->CreateButtonSpriteDefault(
UI::ButtonStyle::LONG);
btn->SetMode(UI::ButtonMode::RADIO);
btn->SetString("四边形(quad)");
panel_menu->Add(btn);
}
{
UI::ButtonSprite* btn = g_ui->CreateButtonSpriteDefault(
UI::ButtonStyle::LONG);
btn->SetMode(UI::ButtonMode::RADIO);
btn->SetString("正多边形(circle)");
panel_menu->Add(btn);
}
{
UI::ButtonSprite* btn = g_ui->CreateButtonSpriteDefault(
UI::ButtonStyle::LONG);
btn->SetMode(UI::ButtonMode::RADIO);
btn->SetString("爱心");
panel_menu->Add(btn);
}
_panelMenu = panel_menu;
_coorRender = Coor::Create(_panelMenu->GetCoorRef());
_coorRender->SetPosition({ 200, 150 });
}
virtual void Update() override
{
_panel->Update();
}
virtual void Render() override
{
g_gfx->RenderCoor(_coorRender, false);
g_gfx->SetCoor(_coorRender);
std::size_t i = _panelMenu->GetSelectIndex();
if (i == 0)
{
for (int j = -10; j < 10; ++j)
{
for (int i = -10; i < 10; ++i)
{
g_gfx->SetColor(createColorRandom());
g_gfx->Dot2D({ 10.0f * i, 10.0f * j });
}
}
}
else if (i == 1)
{
g_gfx->SetColor({ ColorDef::RED, ColorDef::GREEN });
g_gfx->Line2D({ -100, -100 }, { 100, 100 });
g_gfx->SetColor({ ColorDef::WHITE, ColorDef::WHITE });
g_gfx->Line2D({ 100, -100 }, { -100, 100 });
}
else if (i == 2)
{
g_gfx->SetColor({ ColorDef::RED,
ColorDef::GREEN,
ColorDef::BLUE });
g_gfx->Triangle2D({ -0, -50 }, { 50, 50 }, { -50, 50 });
g_gfx->TriangleSolid2D(
{ -0 + 200, -50 },
{ 50 + 200, 50 },
{ -50 + 200, 50 });
}
else if (i == 3)
{
g_gfx->SetColor({ ColorDef::RED, ColorDef::GREEN,
ColorDef::BLUE, ColorDef::YELLOW });
g_gfx->Quad2D(
{ 0, -50 },
{ 50, 0 },
{ 0, 50 },
{ -50, 0 });
g_gfx->QuadSolid2D(
{ 0 + 200, -50 },
{ 50 + 200, 0 },
{ 0 + 200, 50 },
{ -50 + 200, 0 });
}
else if (i == 4)
{
std::vector vec_color;
unsigned n = 33;
for (unsigned i = 0; i < n; ++i)
{
vec_color.push_back(colorLerp((float)i / 32));
}
g_gfx->SetColor(vec_color);
g_gfx->PolygonRegular2D({}, 64, 32);
g_gfx->PolygonRegularSolid2D({200, 0}, 64, 32);
}
else if (i == 5)
{
g_gfx->SetColor({ ColorDef::RED, ColorDef::GREEN });
g_gfx->Love();
}
}
~UIGfx()
{
delete _coorRender;
}
private:
UI::Panel* _panel;
UI::Panel* _panelMenu;
Coor* _coorRender;
};