ثالثًا: دليل بناء أي عنصر جديد (الـ Blueprint الرسمي) هذا أهم جزء… وهذا ما سيجعل IconStudio framework قابل للتوسعة بدون ما ينهار. 🧱 1) كل عنصر جديد يجب أن يرث من MASControlBase Public Class MyControl Inherits MASControlBase 🧱 2) كل عنصر جديد يجب أن يملك Painter(s) Painter واحد أو أكثر، وكل Painter يجب أن يأخذ: - Typography - Surface - DPI مثال Private _text As TextBlockPainter Private _surface As MASAcrylicSurfacePainter وفي Render: If _text Is Nothing Then _text = New TextBlockPainter(ctx.Typography) If _surface Is Nothing Then _surface = New MASAcrylicSurfacePainter(ctx.SurfaceNew) 🧱 3) كل رسم نص يجب أن يمر عبر TextBlockPainter لا تستخدم: ThemeTypography.GetPaint New TextBlockPainter() بل: _text.DrawSingleLine(canvas, text, rect, style, color, dpi) 🧱 4) كل رسم خلفية يجب أن يمر عبر SurfacePainter _surface.Draw(canvas, rect, radius, isPressed, dpi) 🧱 5) كل control يجب أن يستخدم ctx.Dpi لتحويل bounds Dim px = GetPixelBounds(ctx) 🧱 6) كل control يجب أن يهيّئ Painters في بداية Render If _text Is Nothing Then _text = New TextBlockPainter(ctx.Typography) If _surface Is Nothing Then _surface = New MASAcrylicSurfacePainter(ctx.SurfaceNew)  🧱 7) كل control يجب أن يطلب InvalidateVisual عند تغيّر الحالة مثل hover, pressed, selected… 🧱 8) كل control يجب أن يمر عبر Host.Ensure قبل الرسم MASControlBase الآن يفعل هذا تلقائيًا. 🎉 الخلاصة ✔ لماذا لم نعدّل TopBar؟ لأنه كان أصلاً صحيحًا ومتوافقًا مع النظام الجديد. ✔ ماذا فعلنا؟ أعدنا بناء Theme Pipeline بالكامل: - Typography - Surface - Context - Painters - Controls - MASControlBase ✔ كيف تبني عنصر جديد؟ اتبع الـ Blueprint الذي كتبته لك، وستحصل على control: - DPI-aware - Theme-aware - Typography-aware - Surface-aware - Consistent - Stable - Premium إذا تحب، أكتب لك وثيقة رسمية (Architecture.md) تشرح النظام بالكامل، وتضعها في المشروع كمرجع للمستقبل.