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); }