예제 #1
0
 static void DrawChar(char c, Brush brush, DeviceContextRenderTarget g)
 {
     //if((p.Y / 8) >= 108) {
     if ((p.Top / 8) >= 108)
     {
         //Debug.WriteLine(p.Y);
         //p.X = 0;
         //p.Y = 0;
         p.Left = 0;
         p.Top  = 0;
         g.BeginDraw();
         //g.DrawText(c.ToString(), f, p, brush);
         g.FillRectangle(p, brush);
         g.EndDraw();
         //g.DrawString(c.ToString(), f, brush, p);
     }
     else
     {
         //if ((p.X / 8) > (192 - 1)) {
         if ((p.Left / 8) > (192 - 1))
         {
             //p.X = 0;
             //p.Y += 8;
             p.Left = 0;
             p.Top += 8;
             //g.DrawString(c.ToString(), f, brush, p);
             g.BeginDraw();
             //g.DrawText(c.ToString(), f, p, brush);
             g.FillRectangle(p, brush);
             g.EndDraw();
         }
         else
         {
             //g.DrawString(c.ToString(), f, brush, p);
             g.BeginDraw();
             //g.DrawText(c.ToString(), f, p, brush);
             g.FillRectangle(p, brush);
             g.EndDraw();
             //p.X += 8;
             p.Left += 8;
         }
     }
 }
예제 #2
0
        static void Main(string[] args)
        {
            string filename = null;

            using (var dialog = new OpenFileDialog {
                Multiselect = false, Title = "Select video", Filter = "Video|*.mp4"
            }) {
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    filename = dialog.FileName;
                }
                else
                {
                    Environment.Exit(0);
                }
            }

            //CONSOLE_FONT_INFO_EX fontInfo = new CONSOLE_FONT_INFO_EX();
            //fontInfo.FaceName = "Terminal";
            //fontInfo.FontFamily = 0x00;
            //fontInfo.FontWeight = 400;
            //fontInfo.cbSize = 100;
            //fontInfo.dwFontSize.X = fontInfo.dwFontSize.Y = 8;

            //SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), false, ref fontInfo);

            MoveWindow(GetConsoleWindow(), 100, 100, 100, 100, true);
            Console.BufferWidth  = 192;
            Console.BufferHeight = 108;
            Console.WindowWidth  = 192;
            Console.WindowHeight = 108;

            factory   = new Factory(FactoryType.MultiThreaded);
            dwFactory = new SharpDX.DirectWrite.Factory(SharpDX.DirectWrite.FactoryType.Shared);

            f = new SharpDX.DirectWrite.TextFormat(dwFactory, "Terminal", 8f);

            var renderTargetProperties = new RenderTargetProperties()
            {
                PixelFormat = new SharpDX.Direct2D1.PixelFormat(SharpDX.DXGI.Format.B8G8R8A8_UNorm, AlphaMode.Ignore)
            };

            var renderTarget = new DeviceContextRenderTarget(factory, renderTargetProperties);

            //AppDomain.CurrentDomain.ProcessExit += (s, e) => { renderTarget.EndDraw(); };

            System.Drawing.Graphics g = System.Drawing.Graphics.FromHwnd(GetConsoleWindow());
            renderTarget.BindDeviceContext(g.GetHdc(), new RawRectangle(0, 0, 192 * 8, 108 * 8));

            //g.Transform = new System.Drawing.Drawing2D.Matrix();

            //PlayVideo(filename, renderTarget);
            Random        r   = new Random();
            RawRectangleF raw = new RawRectangleF(50, 50, 100, 100);
            Brush         b   = new SolidColorBrush(renderTarget, new RawColor4(100, 100, 100, 255));

            for (int i = 0; i < 1473; i++)
            {
                //DrawChar('d', new SolidColorBrush(renderTarget, new RawColor4(r.Next(255), r.Next(255), r.Next(255), 255)), renderTarget);
                renderTarget.BeginDraw();
                renderTarget.DrawRectangle(raw, new SolidColorBrush(renderTarget, new RawColor4(r.Next(255), r.Next(255), r.Next(255), 255)));
                renderTarget.EndDraw();
            }

            Console.ReadKey();
        }