//mapWriteSceneを生成するだけ
 public MapEditControl(Panel mwp, HScrollBar hScroll, VScrollBar vScroll, Size mapSize, int mapChipSize)
 {
     MapDataControl = new MapDataControl(mapSize, mapChipSize);
     mws            =
         new MapWriteScene(mwp, mapChipSize);
     mws.UpdateLocalPosEvent += () => MapDataControl.MapShowArea.UpdateShowMapImage(mws);
     MapWriteScroll           = new MapWriteScroll(hScroll, vScroll, mws, mapSize, mapChipSize);
     MapDataControl.
     setChangeListEvent(
         () =>
         MapWriteScroll.SetScrollMaximum(mapSize, mapChipSize));
 }
        public MapWriteScroll(HScrollBar hScroll, VScrollBar vScroll, MapWriteScene mws, Size mapSize, int mapChipSize)
            : base(hScroll, vScroll)
        {
            this.mws = mws;
            SetScrollDelta(mapChipSize);
            SetScrollMaximum(mapSize, mapChipSize);
            //スクロールバーの値が更新されたら、mwsの位置を更新する処理を呼ぶ
            ValueChenged += UpdateValue;

            //スクロールバーがスクロールされたら、
            //フォーカスを当てるようにしてmouseホイールしやすくする
            hScroll.Scroll += (o, e) => hScroll.Focus();
            vScroll.Scroll += (o, e) => vScroll.Focus();
        }
Пример #3
0
        //画面に表示するマップチップをAddChildする
        private void AddShowMapImage(MapWriteScene mws, int mapChipSize)
        {
            var panel = mws.control;
            //新たにlUpIndexを計算する
            Point newLUpIndex = mws.LocationToMap(new Point(0, 0), mapChipSize);
            //新たにrDownIndexを計算する
            Point newRDownIndex =
                new Point(
                    panel.Size.Width / mapChipSize + newLUpIndex.X + 1,
                    panel.Size.Height / mapChipSize + newLUpIndex.Y + 1
                    );

            //画面に表示されるMapImageだけAddChild
            for (int x = newLUpIndex.X; x < newRDownIndex.X && x < mapData.MapSizeX; x++)
            {
                for (int y = newLUpIndex.Y; y < newRDownIndex.Y && y < mapData.MapSizeY; y++)
                {
                    mws.AddChild(mapData.List[x, y]);
                }
            }
        }
Пример #4
0
 //表示するMapImageをAddChildして、表示されなくなったMapImageをRemoveChildする
 public void UpdateShowMapImage(MapWriteScene mws)
 {
     ClearShowMapImage();
     AddShowMapImage(mws, mapData.List[0, 0].mapChips[0].MapChipSize);
 }