zoukankan      html  css  js  c++  java
  • 【转】WinForms 使用Graphics绘制字体阴影

    转自:http://www.cnblogs.com/LonelyShadow/p/3893743.html

    C#以两种方法实现文字阴影效果,同时还实现了简单的动画效果:
      一种是对文本使用去锯齿的边缘处理,在两个不同的位置绘制文本,形成阴影;
      另一个是以阴影为线条,构造影线画刷,先画背景再画前景,使用graphics.DrawString来绘制文字的阴影。

    实现效果如下:

    using System;
    using System.Collections.Generic; 
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Linq; 
    using System.Windows.Forms;
    
    namespace Guying.Project.DrawFontShadow
    {
        public partial class FrmMain : Form
        {
            public FrmMain()
            {
                InitializeComponent();
            }
    
            protected override void OnPaint(PaintEventArgs e)
            {
                base.OnPaint(e);
                Graphics graphics = e.Graphics;
                graphics.Clear(Color.White);
                //对文本使用去锯齿的边缘处理
                FontFamily fontFamily = new FontFamily("宋体");
                Font font = new Font(fontFamily, 100, FontStyle.Bold, GraphicsUnit.Pixel);
                //文本输出框
                RectangleF textout = new RectangleF(font.Height, this.ClientSize.Height / 2, this.ClientSize.Width, this.ClientSize.Height);
                //在两个不同的位置绘制文本,形成阴影
                //solidBrush的色彩透明度为100,暗黑
                SolidBrush solidBrush = new SolidBrush(Color.FromArgb(100, Color.Black));
                SolidBrush redBrush = new SolidBrush(Color.Blue);
                graphics.DrawString("孤影", font, solidBrush,
                    new PointF(27.0f, 27.0f));
                graphics.DrawString("孤影", font, redBrush,
                    new PointF(12.0f, 20.0f));
                //另一种阴影字,阴影为线条
                //构造影线画刷
                HatchBrush brush_tmp = new HatchBrush(
                    HatchStyle.DarkDownwardDiagonal, Color.Black, Color.White);
                int reptime = 40;
                //先画背景
                for (int i = 0; i < reptime; i++)
                    graphics.DrawString("您好", font, brush_tmp,
                        new PointF(textout.X + i + 2, textout.Y + i + 2));
                //再画前景
                graphics.DrawString("您好", font, Brushes.Blue, new PointF(textout.X, textout.Y));
            } 
    }
    
    使用Graphics绘制字体阴影
  • 相关阅读:
    day02_07 创建新目录
    day02_04 字典
    day02_02 列表切割
    day03_01 文件操作
    MS的TREE 控件使用
    使用自定义用户控件的一些经验
    Asp.net开发心得点滴[动态加载的用户控件使用事件委托,交给页面处理的事件无效问题]
    正则表达式基础学习[1]
    自定义控件无法在VS.net编辑中显示
    错误的递归
  • 原文地址:https://www.cnblogs.com/wdw31210/p/3893776.html
Copyright © 2011-2022 走看看