protected override void OnPaint(PaintEventArgs e) { Graphics labelGraphics = e.Graphics; labelGraphics.SmoothingMode = smoothingMode; labelGraphics.InterpolationMode = InterpolationMode.HighQualityBicubic; OutlineText m_OutlineText = new OutlineText(); // Text colour, Outline colour, Thickness if (drawOutline) { m_OutlineText.TextOutline(ForeColor, outlineColor, outlineThickness); } else { m_OutlineText.TextNoOutline(ForeColor); } m_OutlineText.EnableShadow(drawShadow); m_OutlineText.SetNullShadow(); if (m_OutlineText.IsShadowEnabled()) { if (drawDiffusedShadow) { m_OutlineText.DiffusedShadow(Color.FromArgb(150, 0, 0, 0), shadowThickness, new Point(shadowOffsetHorizontal, shadowOffsetVertical)); } else { m_OutlineText.Shadow(Color.FromArgb(150, 0, 0, 0), shadowThickness, new Point(shadowOffsetHorizontal, shadowOffsetVertical)); } } if (drawGradient) { float fStartX = 0.0f; float fStartY = 0.0f; float fDestWidth = 0.0f; float fDestHeight = 0.0f; m_OutlineText.MeasureString(labelGraphics, Font.FontFamily, FontStyle.Regular, FontHeight, Text, new Point(0, 0), StringFormat.GenericTypographic, ref fStartX, ref fStartY, ref fDestWidth, ref fDestHeight); LinearGradientBrush gradientBrush = new LinearGradientBrush(new Rectangle(0, 0, (int)fDestWidth, (int)fDestHeight), ForeColor, gradientEndColor, LinearGradientMode.Vertical); if (drawOutline) { m_OutlineText.TextOutline(gradientBrush, outlineColor, outlineThickness); } else { m_OutlineText.TextNoOutline(gradientBrush); } } m_OutlineText.DrawString(labelGraphics, Font.FontFamily, FontStyle.Regular, FontHeight, Text, new Point(0, 0), StringFormat.GenericTypographic); }
private Bitmap TextOutline() { OutlineText outlineText = new OutlineText(); outlineText.TextOutline(ColorTranslator.FromHtml(modelItem.FontColor), Color.FromArgb(template.OutlineColor1), template.OutlineThickness1); outlineText.EnableShadow(template.ShadowEnable); if (template.ShadowEnable) { outlineText.Shadow(Color.FromArgb(template.ShadowColor), template.ShadowThickness, new Point(template.ShadowOffsetX, template.ShadowOffsetY)); } Graphics g = Graphics.FromImage(new Bitmap(1, 1)); outlineText.MeasureString(g, fontFamily, FontStyle.Regular, modelItem.FontSize, modelItem.Text, new Point(0, 0), new StringFormat(), ref fStartX, ref fStartY, ref fDestWidth, ref fDestHeight); fDestHeight++; Bitmap image = new Bitmap((int)(fStartX + fDestWidth), (int)(fStartY + fDestHeight)); // FromImage method creates a new Graphics from the specified Image. Graphics graphics = Graphics.FromImage(image); graphics.SmoothingMode = SmoothingMode.AntiAlias; graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; LinearGradientBrush gradientBrush = new LinearGradientBrush(new RectangleF(fStartX, fStartY, fDestWidth - (fStartX - 10), fDestHeight - (fStartY - 10)), ColorTranslator.FromHtml(modelItem.FontColor), Color.FromArgb(template.TextColor2), LinearGradientMode.Vertical); if (template.TextGradientEnable) { outlineText.TextOutline(gradientBrush, Color.FromArgb(template.OutlineColor1), template.OutlineThickness1); } outlineText.DrawString(graphics, fontFamily, FontStyle.Regular, modelItem.FontSize, modelItem.Text, new Point(0, 0), new StringFormat()); gradientBrush.Dispose(); graphics.Dispose(); g.Dispose(); return(image); }