Exemplo n.º 1
0
        // 座標列に従って描画を実行する
        private static void DrawByPoints(IDrawEngine engine, ElementBase drawer, Point[] points)
        {
            // 座標を列挙
            foreach (var point in points)
            {
                // 移動して
                drawer.MoveTo(point.X, point.Y);

                // 描画
                drawer.Draw(engine);
            }
        }
Exemplo n.º 2
0
        // テストコード
        // (もちろん、IDrawEngineの実装がないので、このままでは実行はできない)
        private static void DrawTest(IDrawEngine engine)
        {
            // 座標列を生成
            var points = new[] { new Point(1, 1), new Point(5, 4), new Point(7, 3), new Point(7, 3) };

            /////////////////////////////////////////////////////////////////
            // 以下、ElementBaseを差し替えるだけで、処理内容を変える事が出来る

            // 座標列に従って、点を描画する
            DrawByPoints(engine, new PointElement(), points);

            // 座標列に従って、線を描画する
            DrawByPoints(engine, new LineElement(), points);

            // 「座標列に従って、(ほにゃほにゃ)を描画する」
            //   ... ためには、ElementBaseを継承した描画クラスを作ればよい事になる。
        }
Exemplo n.º 3
0
 // 「描画実行」の実装
 public override void Draw(IDrawEngine engine)
 {
     engine.DrawLine(lastX_, lastY_, x_, y_);
 }
Exemplo n.º 4
0
 // 「描画実行」の抽象定義
 public abstract void Draw(IDrawEngine engine);
Exemplo n.º 5
0
        // テストコード
        // (もちろん、IDrawEngineの実装がないので、このままでは実行はできない)
        private static void DrawTest(IDrawEngine engine)
        {
            // 座標列を生成
            var points = new[] { new Point(1, 1), new Point(5, 4), new Point(7, 3), new Point(7, 3) };

            /////////////////////////////////////////////////////////////////
            // 以下、ElementBaseを差し替えるだけで、処理内容を変える事が出来る

            // 座標列に従って、点を描画する
            DrawByPoints(engine, new PointElement(), points);

            // 座標列に従って、線を描画する
            DrawByPoints(engine, new LineElement(), points);

            // 「座標列に従って、(ほにゃほにゃ)を描画する」
            //   ... ためには、ElementBaseを継承した描画クラスを作ればよい事になる。
        }
Exemplo n.º 6
0
        // 座標列に従って描画を実行する
        private static void DrawByPoints(IDrawEngine engine, ElementBase drawer, Point[] points)
        {
            // 座標を列挙
            foreach (var point in points)
            {
                // 移動して
                drawer.MoveTo(point.X, point.Y);

                // 描画
                drawer.Draw(engine);
            }
        }
Exemplo n.º 7
0
 // 「描画実行」の実装
 public override void Draw(IDrawEngine engine)
 {
     engine.DrawPoint(x_, y_);
 }
Exemplo n.º 8
0
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            spriteBatch = new SpriteBatch(GraphicsDevice);
            CurrentGraphicsDevice = GraphicsDevice;

            _boardFiller.Fill(_board);
            _drawEngine = _container.Resolve<IDrawEngine>();

            _font = Content.Load<SpriteFont>("GameFont");
            _gameStateController.Initialise();
        }
Exemplo n.º 9
0
 // 「描画実行」の実装
 public override void Draw(IDrawEngine engine)
 {
     engine.DrawPoint(x_, y_);
 }
Exemplo n.º 10
0
 // 「描画実行」の抽象定義
 public abstract void Draw(IDrawEngine engine);
Exemplo n.º 11
0
 // 「描画実行」の実装
 public override void Draw(IDrawEngine engine)
 {
     engine.DrawLine(lastX_, lastY_, x_, y_);
 }
Exemplo n.º 12
0
        public MainViewModel()
        {
            DrawParam.StartX = 50;
            DrawParam.StartY = 50;

            DrawParam.UnitX         = 10;
            DrawParam.UnitY         = 30;
            DrawParam.Margin        = 10;
            DrawParam.VerticalSpace = 50;
            DrawParam.MarkHeight    = 10;

            TimingData = InitTimingData;
            MarkerData = InitMarkerData;

            TimingDatas = TimingMapParser.Parse(TimingData);

            EditStatusString = EditStatus.Unchanged.ToString();

            MessagingCenter.Subscribe <MessageToken>(this, "message", (item) =>
            {
                if (item.TokenType == MessageTokenType.KeyChanged)
                {
                    EditStatus  = EditStatus.Modified;
                    TimingDatas = TimingMapParser.Parse(TimingData);
                    UpdateTimingDiagram();
                }
            });

            InputCharCommand = new Command((ch) =>
            {
                Debug.WriteLine("symbol label clicked, parameter: " + ch);
            });

            ChangeSymbolCommand = new Command((arg) =>
            {
                Debug.WriteLine("symbol label clicked, parameter: " + arg);
            });

            ChangeTimingCommand = new Command((arg) =>
            {
                Debug.WriteLine("Timing data changed : " + arg);
            });

            PaintSurfaceCommand = new Command((arg) =>
            {
                var args = arg as SKPaintSurfaceEventArgs;

                var info    = args.Info;
                var surface = args.Surface;
                var canvas  = surface.Canvas;

                if (_bitmap == null)
                {
                    _bitmap = new SKBitmap(info);
                }

                if (_drawEngine == null)
                {
                    _drawEngine = new SkiaDrawEngine(_bitmap);
                }

                TimingDatas = TimingMapParser.Parse(TimingData);

                _bitmap = _drawEngine.Draw(TimingDatas);

                if (_bitmap != null)
                {
                    canvas.DrawBitmap(_bitmap, 0, 0);
                }

                UpdateTimingDiagram();
            });

            UpdateTimingDiagram();
        }