當前位置: 首頁>>代碼示例>>C#>>正文


C# CGContext.AddCurveToPoint方法代碼示例

本文整理匯總了C#中MonoMac.CoreGraphics.CGContext.AddCurveToPoint方法的典型用法代碼示例。如果您正苦於以下問題:C# CGContext.AddCurveToPoint方法的具體用法?C# CGContext.AddCurveToPoint怎麽用?C# CGContext.AddCurveToPoint使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在MonoMac.CoreGraphics.CGContext的用法示例。


在下文中一共展示了CGContext.AddCurveToPoint方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。

示例1: make_arc

        /*
         * Based on the algorithm described in
         *      http://www.stillhq.com/ctpfaq/2002/03/c1088.html#AEN1212
         */
        static void make_arc(CGContext graphics, bool start, float x, float y, float width,
			         float height, float startAngle, float endAngle, bool antialiasing, bool isPieSlice)
        {
            float delta, bcp;
            double sin_alpha, sin_beta, cos_alpha, cos_beta;
            float PI = (float)Math.PI;

            float rx = width / 2;
            float ry = height / 2;

            /* center */
            float cx = x + rx;
            float cy = y + ry;

            /* angles in radians */
            float alpha = startAngle * PI / 180;
            float beta = endAngle * PI / 180;

            /* adjust angles for ellipses */
            alpha = (float)Math.Atan2(rx * Math.Sin(alpha), ry * Math.Cos(alpha));
            beta = (float)Math.Atan2(rx * Math.Sin(beta), ry * Math.Cos(beta));

            if (Math.Abs(beta - alpha) > PI)
            {
                if (beta > alpha)
                    beta -= 2 * PI;
                else
                    alpha -= 2 * PI;
            }

            delta = beta - alpha;
            bcp = (float)(4.0 / 3.0 * (1 - Math.Cos(delta / 2)) / Math.Sin(delta / 2));

            sin_alpha = Math.Sin(alpha);
            sin_beta = Math.Sin(beta);
            cos_alpha = Math.Cos(alpha);
            cos_beta = Math.Cos(beta);

            /* don't move to starting point if we're continuing an existing curve */
            if (start)
            {
                /* starting point */
                double sx = cx + rx * cos_alpha;
                double sy = cy + ry * sin_alpha;
                if (isPieSlice)
                    graphics.AddLineToPoint((float)sx,(float)sy);
                else
                    graphics.MoveTo((float)sx,(float)sy);
            }

            graphics.AddCurveToPoint(cx + rx * (float)(cos_alpha - bcp * sin_alpha),
                                    cy + ry * (float)(sin_alpha + bcp * cos_alpha),
                                    cx + rx * (float)(cos_beta + bcp * sin_beta),
                                    cy + ry * (float)(sin_beta - bcp * cos_beta),
                                    cx + rx * (float)cos_beta, cy + ry * (float)sin_beta);
        }
開發者ID:asfungithub,項目名稱:sysdrawing-coregraphics,代碼行數:60,代碼來源:Graphics-DrawEllipticalArc.cs


注:本文中的MonoMac.CoreGraphics.CGContext.AddCurveToPoint方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。