iter16ui T8:P8甲卡顶类型色带Bayer有序抖动试点(bcard band平涂ColorRect退役→DitherBand 4×4 Bayer 2px元胞α深至零静态绘制;随TG_*逐卡着色;全站/B区范围留后批=任务书P8甲原文;轻闸冒烟782/0+三探针绿)
This commit is contained in:
1 parent
1b2ecf6400
commit
e5427af6bc
1 file changed
+25
-4
@@ -443,8 +443,31 @@ static func danger_button(text: String, tip := "") -> Button:
|
||||
return b
|
||||
|
||||
|
||||
# 卡顶类型色带·Bayer 有序抖动(UI 设计对齐批 P8 甲 2026-10-06——bcard band 平涂 ColorRect 退役;
|
||||
# demo CSS 平滑渐变/blur 违反像素纪律,改 4×4 Bayer 有序抖动台阶:α 由深至 0,2px 元胞逐行降覆盖;
|
||||
# 纯静态绘制零动效(减动效无涉);Bayer 阶数=实现细节白名单项,取 4×4)
|
||||
class DitherBand:
|
||||
extends Control
|
||||
var band: Color
|
||||
|
||||
func _init(c: Color) -> void:
|
||||
band = c
|
||||
custom_minimum_size = Vector2(0, 8) # 8px = 4×4 Bayer 全周期(原平涂条 6px)
|
||||
|
||||
func _draw() -> void:
|
||||
var bayer := [[0, 8, 2, 10], [12, 4, 14, 6], [3, 11, 1, 9], [15, 7, 13, 5]]
|
||||
var cell := 2.0
|
||||
var rows := int(ceil(custom_minimum_size.y / cell))
|
||||
var cols := int(ceil(size.x / cell))
|
||||
for ry in rows:
|
||||
var cover := 1.0 - float(ry) / float(rows) # 顶行全覆盖 → 底行趋零
|
||||
for rx in cols:
|
||||
if float(bayer[ry % 4][rx % 4]) / 16.0 < cover:
|
||||
draw_rect(Rect2(float(rx) * cell, float(ry) * cell, cell, cell), band, true)
|
||||
|
||||
|
||||
# bcard 竖卡工厂(商店/三选一同构卡——M6/M7 共用;M7.1 差异仅=价签 vs ✓选择章)
|
||||
# 返回 {panel, mark, band, icon, name_l, desc_l, price_l, foot_l};set_selected 经 mark/样式换装
|
||||
# set_selected 经 mark/样式换装
|
||||
class BCard:
|
||||
extends PanelContainer
|
||||
var mark: Label
|
||||
@@ -467,9 +490,7 @@ class BCard:
|
||||
box.add_theme_constant_override("separation", 8)
|
||||
add_child(box)
|
||||
body = box
|
||||
var band_r := ColorRect.new()
|
||||
band_r.color = band
|
||||
band_r.custom_minimum_size = Vector2(0, 6)
|
||||
var band_r := DitherBand.new(band) # P8 甲:卡顶类型色带=Bayer 有序抖动带(随各 TG_* 逐卡着色)
|
||||
box.add_child(band_r)
|
||||
mark = UiKit.label("✓",FS_BODY, true, Color8(58, 42, 8))
|
||||
mark.horizontal_alignment = HORIZONTAL_ALIGNMENT_RIGHT
|
||||
|
||||
Reference in new issue
Block a user