Ejemplo n.º 1
0
        //替换引用
        public void replaceHandler(MClipElement toReplace, MClipElement toCompare)
        {
            MActorsManager MAM = form_Main.form_MAnimation.form_MActorList.actorsManager;

            //转移引用
            for (int i1 = 0; i1 < MAM.Count(); i1++)
            {
                for (int i2 = 0; i2 < MAM[i1].Count(); i2++)
                {
                    for (int i3 = 0; i3 < MAM[i1][i2].Count(); i3++)
                    {
                        for (int i4 = 0; i4 < MAM[i1][i2][i3].Count(); i4++)
                        {
                            for (int i5 = 0; i5 < MAM[i1][i2][i3][i4].Count(); i5++)
                            {
                                for (int i6 = 0; i6 < MAM[i1][i2][i3][i4][i5].Count(); i6++)
                                {
                                    MFrameUnit unit = MAM[i1][i2][i3][i4][i5][i6];
                                    if (unit is MFrameUnit_Bitmap)
                                    {
                                        MFrameUnit_Bitmap unitBitmap = (MFrameUnit_Bitmap)unit;
                                        if (unitBitmap.clipElement.Equals(toCompare))
                                        {
                                            unitBitmap.clipElement = toReplace;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private void button_lock_Click(object sender, EventArgs e)
        {
            if (form_MA.form_MFrameEdit.currentUnits.Count == 0)
            {
                return;
            }
            form_MA.historyManager.ReadyHistory(HistoryType.Action);
            bool makeLock = false;

            for (int i = 0; i < form_MA.form_MFrameEdit.currentUnits.Count; i++)
            {
                MFrameUnit clipElement = form_MA.form_MFrameEdit.currentUnits[i];
                if (clipElement.isLocked)
                {
                    makeLock = true;
                    break;
                }
            }
            makeLock = !makeLock;
            for (int i = 0; i < form_MA.form_MFrameEdit.currentUnits.Count; i++)
            {
                MFrameUnit clipElement = form_MA.form_MFrameEdit.currentUnits[i];
                clipElement.isLocked = makeLock;
            }
            form_MA.historyManager.AddHistory(HistoryType.Action);
            updateLevelLock();
            form_MA.form_MFrameEdit.UpdateRegion_EditAndFrameLevel();
        }
Ejemplo n.º 3
0
        //µ÷Õû¹ö¶¯Ìõ£¬ÈÃÇÐƬ²ãÖÐÖ¸¶¨µÄµ¥ÔªÍêÕûÏÔʾ
        public bool showUnitInView(int id)
        {
            if (form_MA.form_MTimeLine == null || form_MA.form_MTimeLine.focusFrame == null || id < 0 || id >= form_MA.form_MTimeLine.focusFrame.Count())
            {
                return(false);
            }
            float maxHeight = 0;
            float unitY     = 0;
            float unitH     = 0;

            for (int i = 0; i < form_MA.form_MTimeLine.focusFrame.Count(); i++)
            {
                MFrameUnit clip  = form_MA.form_MTimeLine.focusFrame[i];
                SizeF      sizeI = clip.getTransformSize(zoomLevel_ClipsLevel);
                if (id == i)
                {
                    unitY = maxHeight;
                    unitH = sizeI.Height;
                }
                maxHeight += sizeI.Height + form_MA.LEVEL_GAP;
            }
            int maxHeightS = (int)maxHeight;
            int containerH = pictureBox_clipsLevel.Height;

            if (maxHeightS <= containerH || (vScrollBar_ClipsLevel.Maximum - 9) == 0)
            {
                return(false);
            }
            int   scrollH    = maxHeightS - containerH;
            float y          = vScrollBar_ClipsLevel.Value * scrollH / (vScrollBar_ClipsLevel.Maximum - 9);
            int   needChange = -1;

            if (unitY < y)
            {
                y          = unitY;
                needChange = 0;
            }
            if (unitY + unitH > y + containerH)
            {
                y          = unitY + unitH + form_MA.LEVEL_GAP - containerH;
                needChange = 1;
            }
            if (needChange < 0)
            {
                return(false);
            }
            if (y < 0)
            {
                y = 0;
            }
            Form_MAnimation.noScrollEvent = true;
            int newValue = (int)((y * (vScrollBar_ClipsLevel.Maximum - 9) + (scrollH - 1) * needChange) / scrollH);

            newValue = MathUtil.limitNumber(newValue, vScrollBar_ClipsLevel.Minimum, vScrollBar_ClipsLevel.Maximum - 9);
            vScrollBar_ClipsLevel.Value   = newValue;
            Form_MAnimation.noScrollEvent = false;
            return(true);
        }
Ejemplo n.º 4
0
        //返回使用情况
        public virtual String getUsedInfor()
        {
            String         s      = "";
            int            number = 0;
            MActorsManager MAM    = null;

            if (clipsManager.Equals(clipsManager.form_Main.form_MapImagesManager.MClipsManager))
            {
                MAM = clipsManager.form_Main.form_MAnimation.form_MActorList.actorsManager;
            }
            else if (clipsManager.Equals(clipsManager.form_Main.animClipsManagerForExport))
            {
                MAM = clipsManager.form_Main.animActorsManagerExport;
            }
            if (MAM == null)
            {
                return(s);
            }
            for (int i1 = 0; i1 < MAM.Count(); i1++)
            {
                for (int i2 = 0; i2 < MAM[i1].Count(); i2++)
                {
                    for (int i3 = 0; i3 < MAM[i1][i2].Count(); i3++)
                    {
                        for (int i4 = 0; i4 < MAM[i1][i2][i3].Count(); i4++)
                        {
                            for (int i5 = 0; i5 < MAM[i1][i2][i3][i4].Count(); i5++)
                            {
                                for (int i6 = 0; i6 < MAM[i1][i2][i3][i4][i5].Count(); i6++)
                                {
                                    MFrameUnit unit = MAM[i1][i2][i3][i4][i5][i6];
                                    if (unit is MFrameUnit_Bitmap)
                                    {
                                        MFrameUnit_Bitmap unitBitmap = (MFrameUnit_Bitmap)unit;
                                        if (unitBitmap.clipElement.Equals(this))
                                        {
                                            s += "" + MAM[i1].name + "->" + MAM[i1][i2].name + "->" + MAM[i1][i2][i3].name + "->" +
                                                 MAM[i1][i2][i3][i4].name + "->第" + MAM[i1][i2][i3][i4][i5].timeBegin + "帧" + "->第" +
                                                 MAM[i1][i2][i3][i4][i5][i6].GetID() + "个单元" + "\n";
                                            number++;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            s += "共被使用了" + number + "次\n";
            return(s);
        }
Ejemplo n.º 5
0
        //返回是用次数
        public virtual int getUsedTime()
        {
            int            number        = 0;
            MActorsManager MAM           = null;
            MClipsManager  clipsManagerM = clipsManager.form_Main.form_MAnimation.form_MImgsList.MClipsManager;

            Console.WriteLine("m:" + clipsManagerM.GetHashCode() + ",c:" + clipsManager.GetHashCode());
            if (clipsManager.Equals(clipsManagerM))
            {
                MAM = clipsManager.form_Main.form_MAnimation.form_MActorList.actorsManager;
            }
            else if (clipsManager.Equals(clipsManager.form_Main.animClipsManagerForExport))
            {
                MAM = clipsManager.form_Main.animActorsManagerExport;
            }
            if (MAM == null)
            {
                return(0);
            }
            for (int i1 = 0; i1 < MAM.Count(); i1++)
            {
                for (int i2 = 0; i2 < MAM[i1].Count(); i2++)
                {
                    for (int i3 = 0; i3 < MAM[i1][i2].Count(); i3++)
                    {
                        for (int i4 = 0; i4 < MAM[i1][i2][i3].Count(); i4++)
                        {
                            for (int i5 = 0; i5 < MAM[i1][i2][i3][i4].Count(); i5++)
                            {
                                for (int i6 = 0; i6 < MAM[i1][i2][i3][i4][i5].Count(); i6++)
                                {
                                    MFrameUnit unit = MAM[i1][i2][i3][i4][i5][i6];
                                    if (unit is MFrameUnit_Bitmap)
                                    {
                                        MFrameUnit_Bitmap unitBitmap = (MFrameUnit_Bitmap)unit;
                                        if (unitBitmap.clipElement != null && unitBitmap.clipElement.Equals(this))
                                        {
                                            number++;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(number);
        }
Ejemplo n.º 6
0
        //¸üвãËø¶¨×´Ì¬
        public void updateLevelLock()
        {
            if (form_MA.form_MFrameEdit.currentUnits.Count == 0)
            {
                return;
            }
            bool makeLock = false;

            for (int i = 0; i < form_MA.form_MFrameEdit.currentUnits.Count; i++)
            {
                MFrameUnit clipElement = form_MA.form_MFrameEdit.currentUnits[i];
                if (clipElement.isLocked)
                {
                    makeLock = true;
                    break;
                }
            }
            button_lock.BackgroundImage = makeLock ? global::Cyclone.Properties.Resources.level_lock_locked : global::Cyclone.Properties.Resources.level_lock_unclocked;
        }
Ejemplo n.º 7
0
        //¸üвã¿É¼û״̬
        public void updateLevelEye()
        {
            if (form_MA.form_MFrameEdit.currentUnits.Count == 0)
            {
                return;
            }
            bool makeVisible = false;

            for (int i = 0; i < form_MA.form_MFrameEdit.currentUnits.Count; i++)
            {
                MFrameUnit clipElement = form_MA.form_MFrameEdit.currentUnits[i];
                if (clipElement.isVisible)
                {
                    makeVisible = true;
                    break;
                }
            }
            button_visible.BackgroundImage = makeVisible ? global::Cyclone.Properties.Resources.level_eye_on : global::Cyclone.Properties.Resources.level_eye_off;
        }
Ejemplo n.º 8
0
        //(ÇÐƬ²ãͼƬ¿ò)ÉèÖÃÇÐƬ½¹µã
        public void clickClipsLevel(int cursorY)
        {
            if (form_MA.form_MTimeLine == null || form_MA.form_MTimeLine.focusFrame == null)
            {
                return;
            }
            float maxHeight = 0;

            for (int i = 0; i < form_MA.form_MTimeLine.focusFrame.Count(); i++)//×ÝÏòɨÃèËùÓÐÇÐƬ¸ß¶È
            {
                MFrameUnit clip = form_MA.form_MTimeLine.focusFrame[i];
                maxHeight += clip.getTransformSize(zoomLevel_ClipsLevel).Height + form_MA.LEVEL_GAP;
            }
            //maxHeight *= zoomLevel_ClipsLevel;
            int containerH = imgClipsLevelBuf.Height;
            int maxHeightS = (int)maxHeight;
            int scrollH    = maxHeightS > containerH ? maxHeightS - containerH : 0;

            cursorY += (vScrollBar_ClipsLevel.Maximum - 9) == 0 ? 0 : vScrollBar_ClipsLevel.Value * scrollH / (vScrollBar_ClipsLevel.Maximum - 9);

            maxHeight = 0;
            MFrameUnit focusedClipclip = null;

            for (int i = 0; i < form_MA.form_MTimeLine.focusFrame.Count(); i++)//×ÝÏòɨÃèËùÓÐÇÐƬ¸ß¶È
            {
                MFrameUnit clip    = form_MA.form_MTimeLine.focusFrame[i];
                SizeF      clipBox = clip.getLastTransformSize();
                if (MathUtil.inRegionCloseLeft(cursorY, maxHeight, maxHeight + (clipBox.Height + form_MA.LEVEL_GAP)))
                {
                    focusedClipclip = clip;
                    break;
                }
                maxHeight += (clipBox.Height + form_MA.LEVEL_GAP);
            }
            if (focusedClipclip != null)
            {
                if (ModifierKeys == Keys.Shift)
                {
                    if (form_MA.form_MFrameEdit.currentUnits.Count == 1)
                    {
                        MFrameUnit startClip = form_MA.form_MFrameEdit.currentUnits[0];
                        int        startID   = startClip.GetID();
                        int        endID     = focusedClipclip.GetID();
                        form_MA.form_MFrameEdit.releaseFocusClips();
                        for (int i = Math.Min(startID, endID); i <= Math.Max(startID, endID); i++)
                        {
                            form_MA.form_MFrameEdit.addFocusClips(form_MA.form_MTimeLine.focusFrame[i], false);
                        }
                    }
                    else
                    {
                        form_MA.form_MFrameEdit.releaseFocusClips();
                        form_MA.form_MFrameEdit.addFocusClips(focusedClipclip, false);
                    }
                }
                else if (ModifierKeys == Keys.Control)
                {
                    form_MA.form_MFrameEdit.addFocusClips(focusedClipclip, false, true);
                }
                else
                {
                    form_MA.form_MFrameEdit.releaseFocusClips();
                    form_MA.form_MFrameEdit.addFocusClips(focusedClipclip, false);
                }
                form_MA.form_MFrameEdit.UpdateRegion_EditFrame();
                UpdateRegion_FrameLevel();
                form_MA.form_MConfig.checkUnitProperty();
            }
            form_MA.historyManager.ReadyHistory(HistoryType.Action);
        }
Ejemplo n.º 9
0
        private Image imgClipsLevelBuf = null;//ÇÐƬ²ãÏÔʾÇøÓò»º³å
        //(ÇÐƬ²ãͼƬ¿ò)Ë¢ÐÂÇÐƬ²ãͼƬ¿òÏÔʾÇøÓò
        public void UpdateRegion_FrameLevel()
        {
            if (pictureBox_clipsLevel.Height <= 0 || pictureBox_clipsLevel.Width <= 0)
            {
                return;
            }
            //µ÷Õû»º³å
            if (imgClipsLevelBuf == null || imgClipsLevelBuf.Width != pictureBox_clipsLevel.Width || imgClipsLevelBuf.Height != pictureBox_clipsLevel.Height)
            {
                imgClipsLevelBuf = new Bitmap(pictureBox_clipsLevel.Width, pictureBox_clipsLevel.Height);
            }
            //¼ÆËã×î´óÇÐƬ³ß´çÒÔµ÷Õû¹ö¶¯Ìõ
            //³ß´ç,ͬÈÝÆ÷¿ò´óС
            int containerW = imgClipsLevelBuf.Width;
            int containerH = imgClipsLevelBuf.Height;
            //»æÖƵ½»º³å
            Graphics gBuf = Graphics.FromImage(imgClipsLevelBuf);

            gBuf.Clear(Color.Transparent);
            if (form_MA != null && form_MA.form_MTimeLine != null && form_MA.form_MTimeLine.focusFrame != null)
            {
                //ɨÃèÇÐƬ£¬¼ÆË㻺³å´óС
                float maxWidth = 0;
                for (int i = 0; i < form_MA.form_MTimeLine.focusFrame.Count(); i++)//ºáÏòɨÃè×î´óÇÐƬ¿í¶È
                {
                    MFrameUnit clip = form_MA.form_MTimeLine.focusFrame[i];
                    float      wI   = clip.getTransformSize(zoomLevel_ClipsLevel).Width;
                    if (maxWidth < wI)
                    {
                        maxWidth = wI;
                    }
                }
                float maxHeight = 0;
                for (int i = 0; i < form_MA.form_MTimeLine.focusFrame.Count(); i++)//×ÝÏòɨÃè×î´óÇÐƬ¸ß¶È
                {
                    MFrameUnit clip = form_MA.form_MTimeLine.focusFrame[i];
                    maxHeight += clip.getLastTransformSize().Height + form_MA.LEVEL_GAP;
                }
                //µ÷Õû¹ö¶¯Ìõ
                int   maxHeightS = (int)maxHeight;
                int   scrollH    = maxHeightS > containerH ? maxHeightS - containerH : 0;
                int   x          = 0;
                float y          = (vScrollBar_ClipsLevel.Maximum - 9) == 0 ? 0 : vScrollBar_ClipsLevel.Value * scrollH / (vScrollBar_ClipsLevel.Maximum - 9);
                y = -y;
                //»æÖÆËùÓÐÇпé
                for (int i = 0; i < form_MA.form_MTimeLine.focusFrame.Count(); i++)
                {
                    MFrameUnit clip    = form_MA.form_MTimeLine.focusFrame[i];
                    SizeF      clipBox = clip.getLastTransformSize();
                    clip.GdiDisplay(gBuf, x + clipBox.Width / 2 + form_MA.LEVEL_GAP, y + clipBox.Height / 2 + form_MA.LEVEL_GAP, zoomLevel_ClipsLevel, Form_MTimeLine.timePosition);
                    if (clip.isLocked)
                    {
                        GraphicsUtil.fillRect(gBuf, x + form_MA.LEVEL_GAP, y + form_MA.LEVEL_GAP, clipBox.Width, clipBox.Height, 0x00FF00, 0x44);
                    }
                    if (!clip.isVisible)
                    {
                        GraphicsUtil.fillRect(gBuf, x + form_MA.LEVEL_GAP, y + form_MA.LEVEL_GAP, clipBox.Width, clipBox.Height, Consts.colorRed, 0x44);
                        if (form_MA.form_MFrameEdit.currentUnits.Contains(clip))
                        {
                            GraphicsUtil.drawRect(gBuf, x + form_MA.LEVEL_GAP, y + form_MA.LEVEL_GAP, clipBox.Width, clipBox.Height, Consts.colorBlue);
                        }
                    }
                    else if (form_MA.form_MFrameEdit.currentUnits.Contains(clip))
                    {
                        GraphicsUtil.fillRect(gBuf, x + form_MA.LEVEL_GAP, y + form_MA.LEVEL_GAP, clipBox.Width, clipBox.Height, Consts.colorBlue, 0x44);
                        GraphicsUtil.drawRect(gBuf, x + form_MA.LEVEL_GAP, y + form_MA.LEVEL_GAP, clipBox.Width, clipBox.Height, Consts.colorBlue);
                    }
                    else
                    {
                        GraphicsUtil.drawRect(gBuf, x + form_MA.LEVEL_GAP, y + form_MA.LEVEL_GAP, clipBox.Width, clipBox.Height, Consts.colorDarkGray);
                    }
                    y += clipBox.Height + form_MA.LEVEL_GAP;
                }
            }
            gBuf.Dispose();
            //»æÖƵ½ÆÁÄ»
            if (pictureBox_clipsLevel.Image == null || !pictureBox_clipsLevel.Image.Equals(imgClipsLevelBuf))
            {
                pictureBox_clipsLevel.Image = imgClipsLevelBuf;
            }
            else
            {
                pictureBox_clipsLevel.Refresh();
            }
        }
        public void addFocusClips(MFrameUnit clipElement, bool focusItsCenter, bool allowDel)
        {
            if (clipElement == null)
            {
                return;
            }
            if (!currentUnits.Contains(clipElement))
            {
                currentUnits.Add(clipElement);
            }
            else if (allowDel)
            {
                currentUnits.Remove(clipElement);
            }
            if (focusItsCenter)
            {
                imgEditCenterPixelX = (int)clipElement.posX;
                imgEditCenterPixelY = (int)clipElement.posY;
            }
            rememberCurrentUnitsCoor();
            form_MA.form_MFrameLevel.updateLevelEye();
            form_MA.form_MFrameLevel.updateLevelLock();
            form_MA.showInfor("共选中了" + currentUnits.Count + "个单元");

        }
 //将切片增加到为焦点切片集合
 public void addFocusClips(MFrameUnit clipElement, bool focusItsCenter)
 {
     addFocusClips(clipElement, focusItsCenter, false);
 }