private int OnExecute() { var options = new LedMatrixOptions() { Brightness = (byte)Brightness, }; // Check if we have only extreme colors if (Brightness == 100 && FullSaturation(Color) && FullSaturation(BackgroundColor) ) { options.PwmBits = 1; } var matrix = new LedMatrix(options); var canvas = matrix.CreateOffscreenCanvas(); var font = new BdfFont(Font); while (!Console.KeyAvailable) { var text = DateTime.UtcNow.ToString(Format); canvas.Fill(BackgroundColor); canvas.DrawText(font, XOrigin, YOrigin + font.Baseline, Color, text, Spacing); matrix.SwapOnVsync(canvas); Thread.Sleep(TimeSpan.FromMilliseconds(250)); } return(0); }
public static int Main(string[] args) { var matrix = new LedMatrix(new LedMatrixOptions(), args); var canvas = matrix.CreateOffscreenCanvas(); var maxBrightness = matrix.Brightness; var count = 0; const int c = 255; while (!Console.KeyAvailable) { if (matrix.Brightness < 1) { matrix.Brightness = maxBrightness; count += 1; } else { matrix.Brightness -= 1; } switch (count % 4) { case 0: canvas.Fill(new Color(c, 0, 0)); break; case 1: canvas.Fill(new Color(0, c, 0)); break; case 2: canvas.Fill(new Color(0, 0, c)); break; case 3: canvas.Fill(new Color(c, c, c)); break; } canvas = matrix.SwapOnVsync(canvas); Thread.Sleep(20); } return(0); }
private int OnExecute() { var matrix = new LedMatrix(new LedMatrixOptions()); var canvas = matrix.CreateOffscreenCanvas(); var font = new BdfFont(Font); canvas.DrawText(font, XOrigin, YOrigin + font.Baseline, new Color(0, 255, 0), Text, Spacing); matrix.SwapOnVsync(canvas); while (!Console.KeyAvailable) { Thread.Sleep(250); } return(0); }
public static int Main(string[] args) { var matrix = new LedMatrix(new LedMatrixOptions(), args); var canvas = matrix.CreateOffscreenCanvas(); for (var i = 0; i < 1000; ++i) { for (var y = 0; y < canvas.Height; ++y) { for (var x = 0; x < canvas.Width; ++x) { canvas.SetPixel(x, y, new Color(i & 0xff, x, y)); } } canvas.DrawCircle(canvas.Width / 2, canvas.Height / 2, 6, new Color(0, 0, 255)); canvas.DrawLine(canvas.Width / 2 - 3, canvas.Height / 2 - 3, canvas.Width / 2 + 3, canvas.Height / 2 + 3, new Color(0, 0, 255)); canvas.DrawLine(canvas.Width / 2 - 3, canvas.Height / 2 + 3, canvas.Width / 2 + 3, canvas.Height / 2 - 3, new Color(0, 0, 255)); canvas = matrix.SwapOnVsync(canvas); } return(0); }
public static int Main(string[] args) { var matrix = new LedMatrix(new LedMatrixOptions(), args); var canvas = matrix.CreateOffscreenCanvas(); var rnd = new Random(); var points = new List <Point>(); var recycled = new Stack <Point>(); int frame = 0; var stopwatch = new Stopwatch(); while (!Console.KeyAvailable) { stopwatch.Restart(); frame++; if (frame % FRAME_STEP == 0) { if (recycled.Count == 0) { points.Add(new Point(rnd.Next(0, canvas.Width), 0)); } else { var point = recycled.Pop(); point.X = rnd.Next(0, canvas.Width); point.Y = 0; point.Recycled = false; } } canvas.Clear(); foreach (var point in points) { if (!point.Recycled) { point.Y++; if (point.Y - MAX_HEIGHT > canvas.Height) { point.Recycled = true; recycled.Push(point); } for (var i = 0; i < MAX_HEIGHT; i++) { canvas.SetPixel(point.X, point.Y - i, new Color(0, 255 - i * COLOR_STEP, 0)); } } } canvas = matrix.SwapOnVsync(canvas); // force 30 FPS var elapsed = stopwatch.ElapsedMilliseconds; if (elapsed < 33) { Thread.Sleep(33 - (int)elapsed); } } return(0); }