コード例 #1
0
        static void Main(string[] args)
        {
            var devices = StreamDeck.GetDevices().ToList();

            if (!devices.Any())
            {
                Console.WriteLine("Could not find a StreamDeck.");
                Console.ReadKey();
                return;
            }

            var deck = devices.First();

            deck.Connect();
            deck.SetBrightness(50);

            var       renderer = new SampleRenderer();
            Stopwatch sw       = new Stopwatch();

            sw.Start();
            double lastTime       = sw.Elapsed.TotalMilliseconds;
            Bitmap screen         = new Bitmap(StreamDeck.FullScreenWidth, StreamDeck.FullScreenHeight);
            var    graphics       = Graphics.FromImage(screen);
            double targetFps      = 60;
            double targetInterval = 1000 / targetFps;

            renderer.Init(screen.Width, screen.Height);

            deck.OnButtonDown += index => renderer.OnKeyDown(index);
            deck.OnButtonUp   += index => renderer.OnKeyUp(index);

            while (true)
            {
                double now  = sw.Elapsed.TotalMilliseconds;
                double dtMs = now - lastTime;
                double dt   = dtMs / 1000;
                lastTime = now;

                renderer.Update(dt, screen, graphics);
                renderer.Render(dt, screen, graphics);

                deck.WriteScreenImage(screen);

                double delay = targetInterval - dtMs;
                if (delay > 0)
                {
                    Thread.Sleep((int)delay);
                }
            }


            Console.WriteLine("StreamDeck found, press any key to exit.");
            Console.ReadKey();
            deck.Disconnect();
        }