using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using PCPalConfigurator.Rendering; namespace PCPalConfigurator.UI { /// /// Custom panel for displaying OLED preview /// public class OledPreviewPanel : Panel { private List previewElements = new List(); private readonly OledRenderer renderer = new OledRenderer(); public OledPreviewPanel() { this.BackColor = Color.Black; this.BorderStyle = BorderStyle.FixedSingle; this.DoubleBuffered = true; // Reduces flicker during repaints } /// /// Updates the preview elements to be rendered /// public void SetPreviewElements(List elements) { previewElements = elements ?? new List(); this.Invalidate(); // Trigger a repaint } /// /// Handles the paint event to render the OLED preview /// protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); // Render the preview elements renderer.RenderPreview(e.Graphics, previewElements, this.Width, this.Height); } } }