47 lines
1.6 KiB
C++
47 lines
1.6 KiB
C++
#pragma once
|
|
#include "Control.h"
|
|
// 画布容器控件,可以作为其他控件的父容器
|
|
// 功能:
|
|
// - 包含和管理子控件
|
|
// - 将事件传递给子控件
|
|
// - 提供统一的背景和边框
|
|
// 使用场景: 用于分组相关控件或实现复杂布局
|
|
class Canvas : public Control
|
|
{
|
|
private:
|
|
std::vector<std::unique_ptr<Control>> controls;
|
|
|
|
StellarX::controlShape shape = StellarX::controlShape::RECTANGLE; //容器形状
|
|
|
|
StellarX::fillMode canvasFillMode = StellarX::fillMode::Solid; //容器填充模式
|
|
StellarX::lineStyle canvasLineStyle = StellarX::lineStyle::Solid; //线型
|
|
int canvaslinewidth = 1; //线宽
|
|
|
|
COLORREF canvasBorderClor = RGB(0, 0, 0);//边框颜色
|
|
COLORREF canvasBkClor = RGB(255,255,255); //背景颜色
|
|
|
|
public:
|
|
Canvas(int x, int y, int width, int height);
|
|
~Canvas() {}
|
|
//绘制容器及其子控件
|
|
void draw() override;
|
|
void handleEvent(const ExMessage& msg) override;
|
|
//添加控件
|
|
void addControl(std::unique_ptr<Control> control);
|
|
|
|
//设置容器样式
|
|
void setShape(StellarX::controlShape shape);
|
|
//设置容器填充模式
|
|
void setcanvasfillMode(StellarX::fillMode mode);
|
|
//设置容器边框颜色
|
|
void setBorderColor(COLORREF color);
|
|
//设置填充颜色
|
|
void setCanvasBkColor(COLORREF color);
|
|
//设置线形
|
|
void setcanvasLineStyle(StellarX::lineStyle style);
|
|
//设置线段宽度
|
|
void setlinewidth(int width);
|
|
|
|
};
|
|
|