当前位置: 首页>>代码示例>>C#>>正文


C# ITexture.Blt方法代码示例

本文整理汇总了C#中ITexture.Blt方法的典型用法代码示例。如果您正苦于以下问题:C# ITexture.Blt方法的具体用法?C# ITexture.Blt怎么用?C# ITexture.Blt使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ITexture的用法示例。


在下文中一共展示了ITexture.Blt方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: BltRotate

        /// <summary>
        /// bltの回転機能つき。
        /// </summary>
        /// <param name="src"></param>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="srcRect"></param>
        /// <param name="rad"></param>
        /// <param name="rate"></param>
        /// <param name="bx"></param>
        /// <param name="by"></param>
        /// <remarks>
        /// <para>
        /// 指定のテクスチャを転送先の(x,y)に半径rで描画します。
        /// </para>
        /// <para>
        /// radの単位は、0~512で一周(2π)となる角度。
        /// 	回転の方向は、右まわり(時計まわり)。
        /// rateは、拡大率。1.0ならば等倍。
        /// (bx,by)は転送元の画像の、回転中心。
        /// srcRectは転送元矩形。nullならば転送元テクスチャ全体。
        /// </para>
        /// </remarks>
        public void BltRotate(ITexture src, int x, int y, Rect srcRect, int rad, float rate, int bx, int by)
        {
            if (src == null) return;

            int sx, sy;	//	転送元サイズ

            if (srcRect == null)
            {
                srcRect = new Rect(0, 0, src.Width, src.Height);
            }

            {
                sx = (int)(srcRect.Right - srcRect.Left);
                sy = (int)(srcRect.Bottom - srcRect.Top);
            }

            if (sx == 0 || sy == 0) return;

            int dx, dy;	//	転送先サイズ
            dx = (int)(sx * rate);
            dy = (int)(sy * rate);
            if (dx == 0 || dy == 0) return;

            // 転送元の回転中心
            bx = (int)(bx * rate);
            by = (int)(by * rate);

            //	転送後の座標を計算する
            int nSin = SinTable.Instance.Sin(rad);
            int nCos = SinTable.Instance.Cos(rad);

            Point[] dstPoints = new Point[4];

            //	0.5での丸めのための修正項 → 0x8000
            int px = x + bx;
            int py = y + by;

            int ax0 = -bx;
            int ay0 = -by;
            dstPoints[0].X = Round.RShift((int)(ax0 * nCos - ay0 * nSin), 16) + px;
            dstPoints[0].Y = Round.RShift((int)(ax0 * nSin + ay0 * nCos), 16) + py;
            int ax1 = dx - bx;
            int ay1 = -by;
            dstPoints[1].X = Round.RShift((int)(ax1 * nCos - ay1 * nSin), 16) + px;
            dstPoints[1].Y = Round.RShift((int)(ax1 * nSin + ay1 * nCos), 16) + py;
            int ax2 = dx - bx;
            int ay2 = dy - by;
            dstPoints[2].X = Round.RShift((int)(ax2 * nCos - ay2 * nSin), 16) + px;
            dstPoints[2].Y = Round.RShift((int)(ax2 * nSin + ay2 * nCos), 16) + py;
            int ax3 = -bx;
            int ay3 = dy - by;
            dstPoints[3].X = Round.RShift((int)(ax3 * nCos - ay3 * nSin), 16) + px;
            dstPoints[3].Y = Round.RShift((int)(ax3 * nSin + ay3 * nCos), 16) + py;
            //	変数無駄な代入が多いが、最適化されるかなぁ(´Д`)

            src.Blt(DrawContext, srcRect, dstPoints);
        }
开发者ID:sinshu,项目名称:dtf,代码行数:80,代码来源:Screen2DGl.cs

示例2: Blt

 /// <summary>
 /// 凸四角形→凸四角形への転送。
 /// </summary>
 /// <param name="src"></param>
 /// <param name="srcPoint"></param>
 /// <param name="dstPoint"></param>
 public void Blt(ITexture src, Point[] srcPoint, Point[] dstPoint)
 {
     if (src != null)
         src.Blt(DrawContext, srcPoint, dstPoint);
 }
开发者ID:sinshu,项目名称:dtf,代码行数:11,代码来源:Screen2DGl.cs


注:本文中的ITexture.Blt方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。