public override bool GdiDrawString( System.Drawing.Graphics pGraphics, LOGFONT pLogFont, string pszText, System.Drawing.Rectangle rtDraw) { using (GraphicsPath pPath = new GraphicsPath(System.Drawing.Drawing2D.FillMode.Winding)) { bool b = GDIPath.GetStringPath( pGraphics, pPath, pszText, pLogFont, rtDraw); if (false == b) { return(false); } 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) { System.Drawing.Color clr = list[i - 1]; using (Pen pen = new Pen(clr, i)) { pen.LineJoin = LineJoin.Round; pGraphics.DrawPath(pen, pPath); } } if (m_bClrText) { using (SolidBrush brush = new SolidBrush(m_clrText)) { pGraphics.FillPath(brush, pPath); } } else { pGraphics.FillPath(m_brushText, pPath); } } return(true); }
/// <summary> /// Setting Gradient Outlined Text effect: Outline will be done after rendering text body /// </summary> /// <param name="brushText">is the text brush</param> /// <param name="clrOutline1">is the inner outline color</param> /// <param name="clrOutline2">is the outer outline color</param> /// <param name="nThickness">is the outline thickness</param> /// <returns>valid ITextStrategy pointer if successful</returns> public static ITextStrategy TextGradOutlineLast( System.Drawing.Brush brushText, System.Drawing.Color clrOutline1, System.Drawing.Color clrOutline2, int nThickness, GradientType gradType) { TextGradOutlineLastStrategy strat = new TextGradOutlineLastStrategy(); strat.Init(brushText, clrOutline1, clrOutline2, nThickness, gradType); return(strat); }
public override 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((ITextStrategy)(p)); }
public override bool DrawString( System.Drawing.Graphics graphics, System.Drawing.FontFamily fontFamily, System.Drawing.FontStyle fontStyle, int fontSize, string strText, System.Drawing.Point ptDraw, System.Drawing.StringFormat strFormat) { using (GraphicsPath path = new GraphicsPath()) { path.AddString(strText, fontFamily, (int)fontStyle, fontSize, ptDraw, strFormat); 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) { using (Pen pen1 = new Pen(list[i - 1], i)) { pen1.LineJoin = LineJoin.Round; graphics.DrawPath(pen1, path); } } if (m_bClrText) { using (SolidBrush brush = new SolidBrush(m_clrText)) { graphics.FillPath(brush, path); } } else { graphics.FillPath(m_brushText, path); } } return(true); }