Пример #1
0
        public MCBaseSprite CreateSpriteFromTextureName(string name, float anchorX = float.MinValue, float anchorY = float.MinValue)
        {
            string spriteName;
            //---------------------------------------------
            //! テクスチャースの読み込み
            //---------------------------------------------
            MCBaseTexture baseTx;

            if (!App.ImageMgr.GetTexture(name, out baseTx))
            {
                baseTx = MCTexture.CreateTextureFromFile(
                    App,
                    name,
                    name
                    );
                if (baseTx == null)
                {
                    throw new Exception("スプライト作成で、テキストテクスチャ[" + name + "]からテクスチャ作成失敗しました。");
                }
            }
            int w = baseTx.GetDesc().D2.Width;
            int h = baseTx.GetDesc().D2.Height;

            spriteName = CreateName(name, 0, 0, w, h, anchorX, anchorY);

            MCTexture tx = (MCTexture)baseTx;
            //---------------------------------------------
            //! スプライト登録
            //---------------------------------------------
            MCBaseSprite spriteData;

            if (!App.SpriteMgr.GetSpriteData(spriteName, out spriteData))
            {
                MCSprite sp;
                MCRect   rc = new MCRect();

                bool ret;
                rc.SetXYWH(0, 0, w, h);

                if (anchorX == float.MinValue && anchorY == float.MinValue)
                {
                    sp = MCSprite.CreateSprite(App, spriteName, baseTx, rc, MC_SPRITE_ANCHOR.CENTER);
                }
                else
                {
                    sp = MCSprite.CreateSprite(App, spriteName, baseTx, rc, MC_SPRITE_ANCHOR.CUSTOM, anchorX, anchorY);
                }

                if (sp == null)
                {
                    throw new Exception("スプライト作成失敗[" + spriteName + "]既に登録されている名前か、それ以外です。");
                }
                spriteData = sp;
            }

            m_spriteMgr.Add(spriteData, true);
            return(spriteData);
        }
        public MCBaseSprite CreatePrintScreenSprite(int x, int y, int w, int h, float anchorX = float.MinValue, float anchorY = float.MinValue)
        {
            //---------------------------------------------
            //! テクスチャースの読み込み
            //---------------------------------------------
            MCBaseTexture txISP;
            string        str;

            if (!App.ImageMgr.GetTexture("PrintScreen", out txISP))
            {
                str = "PrintScreenプライト取得に失敗しました。";
                throw new Exception(str);
            }

            string spriteName = CreateName("PrintScreen", x, y, w, h, anchorX, anchorY);


            MCTexture txSP = (MCTexture)txISP;
            //---------------------------------------------
            //! スプライト登録
            //---------------------------------------------
            MCBaseSprite spriteData;

            if (!App.SpriteMgr.GetSpriteData(spriteName, out spriteData))
            {
                MCRect   rc = new MCRect();
                MCSprite sp;
                rc.SetXYWH(x, y, w, h);

                if (anchorX == float.MinValue && anchorY == float.MinValue)
                {
                    sp = MCSprite.CreateSprite(App, spriteName, txISP, rc, MC_SPRITE_ANCHOR.CENTER);
                }
                else
                {
                    sp = MCSprite.CreateSprite(App, spriteName, txISP, rc, MC_SPRITE_ANCHOR.CUSTOM, anchorX, anchorY);
                }


                if (sp == null)
                {
                    throw new Exception("スプライト作成失敗[" + spriteName + "]既に登録されている名前か、それ以外です。");
                }

                spriteData = sp;
            }
            else
            {
                throw new Exception("PrintScreenスプライト[" + spriteName + "]は既に存在します。");
            }

            m_spriteMgr.Add(spriteData, true);
            return(spriteData);
        }