Allan
菜鸟也是有梦想的...

导航

 

最近看到老师用线程也可以把窗体的的字动起来,而且还想flash一样的效果,一点都不卡,我回到学校就动手做了一下,

你看:

Code:

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class UseTimer : Form
    {
        private const float maxSize = 70F;
        private const float step = 1F;
        private float current = 10F;
        private const string text = "这是我的作品,谢谢观赏!";
        public UseTimer()
        {
            InitializeComponent();
            SetStyle(ControlStyles.UserPaint, true);
            SetStyle(ControlStyles.AllPaintingInWmPaint,true);
            SetStyle(ControlStyles.OptimizedDoubleBuffer,true);
        }
        private void OnTick(object sender, EventArgs e)
        {
            if (current > maxSize)
            {
                current = 10F;
            }
            // 把字体加大1.0 
            current += step;
            // 强制客户区重新绘制.
            Invalidate();
        }
        /// <summary>
        /// 通过重写这个方法,可以在窗体客户区中进行绘制.
        /// </summary>
        /// <param name="e"></param>
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            Graphics gra = e.Graphics;
            gra.Clear(Color.White);
            // 得到客户区的宽和高.
            int width = ClientRectangle.Width;
            int height = ClientRectangle.Height;
            // 构建出绘制要用的字体.
            Font font = new Font("微软雅黑", current);
            Color color = Color.Lime;
            // 计算出文本绘制出来后宽,高各是多少.
            SizeF sf = gra.MeasureString(text, font);
            float x = (width - sf.Width) / 2F;
            float y = (height - sf.Height) / 2F;
            //
            Brush brush = new SolidBrush(color);
            // 绘制文本.
            gra.DrawString(text, font, brush, new PointF(x, y));
            brush.Dispose();
            font.Dispose();

        }

        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Enabled = true;
        }
    }
    
}

效果呢:就是字体从小不断地放大。

 

你也可以去体验一下真正的效果哦

posted on 2010-12-11 21:00  AllanGuan  阅读(462)  评论(1编辑  收藏  举报