class TintRect: RectBlock { tint: String function paint(self: TintRect, mount: Mount, geometry: Bounds): DisplayList { drawing = RectBlock.paint(self, mount, geometry) drawing.commands.at(0).color = self.tint return drawing } } class Badge: TextBlock { background: String function paint(self: Badge, mount: Mount, geometry: Bounds): DisplayList { fill = PaintCommand() fill.kind = "roundedRect" fill.x = geometry.x fill.y = geometry.y fill.width = geometry.width fill.height = geometry.height fill.radius = 6 fill.color = self.background text = TextBlock.paint(self, mount, geometry).commands.at(0) text.color = "#FFFFFF" return DisplayList(ObjectList(fill, text)) } } class RecolorButton: Button { target: TintRect function onEvent(self: RecolorButton, event: Event): Unit { self.target.tint = "#526AC7" } } rect = TintRect(200, 60, 12, "#DDEEFF", "#ED6A5A") badge = Badge("Endor 源码正在绘制这个背景", 2, "#237A45") button = RecolorButton("通过对象方法改变绘制颜色", rect) root = Column(24, 16, TextBlock("源码 paint 进入真实窗口", 2), rect, rect, badge, button) page = Page() page.render(root)