Exemplo n.º 1
0
        public static ITextStrategy TextGradOutlineLast(
            Color clrText,
            Color clrOutline1,
            Color clrOutline2,
            int nThickness,
            GradientType gradType)
        {
            TextGradOutlineLastStrategy strat = new TextGradOutlineLastStrategy();

            strat.Init(clrText, clrOutline1, clrOutline2, nThickness, gradType);

            return(strat);
        }
        public ITextStrategy Clone()
        {
            TextGradOutlineLastStrategy p = new TextGradOutlineLastStrategy();

            if (m_bClrText)
            {
                p.Init(m_clrText, m_clrOutline1, m_clrOutline2, m_nThickness, m_GradientType);
            }
            else
            {
                p.Init(m_brushText, m_clrOutline1, m_clrOutline2, m_nThickness, m_GradientType);
            }

            return(p);
        }
        public bool DrawString(
            CanvasDrawingSession graphics,
            CanvasTextLayout textLayout,
            float x, float y)
        {
            using (CanvasGeometry geometry = CanvasGeometry.CreateText(textLayout))
            {
                CanvasStrokeStyle stroke = new CanvasStrokeStyle();
                stroke.DashStyle = CanvasDashStyle.Solid;
                stroke.DashCap   = CanvasCapStyle.Round;
                stroke.StartCap  = CanvasCapStyle.Round;
                stroke.EndCap    = CanvasCapStyle.Round;
                stroke.LineJoin  = CanvasLineJoin.Round;

                List <Color> list = new List <Color>();
                if (m_GradientType == GradientType.Sinusoid)
                {
                    TextGradOutlineLastStrategy.CalculateCurvedGradient(m_clrOutline1, m_clrOutline2, m_nThickness, list);
                }
                else
                {
                    TextGradOutlineLastStrategy.CalculateGradient(m_clrOutline1, m_clrOutline2, m_nThickness, list);
                }

                for (int i = m_nThickness; i >= 1; --i)
                {
                    graphics.DrawGeometry(geometry, x, y, list[i - 1], i, stroke);
                }

                if (m_bClrText)
                {
                    graphics.FillGeometry(geometry, x, y, m_clrText);
                }
                else
                {
                    graphics.FillGeometry(geometry, x, y, m_brushText);
                }
            }
            return(true);
        }