C# 滚动字幕如何实现?

想在程序中界面中出现滚动字幕,应如何实现?烦麻提供代码,谢谢了!... 想在程序中界面中出现滚动字幕,应如何实现?烦麻提供代码,谢谢了! 展开
 我来答
dong_1984dd
推荐于2016-03-10 · TA获得超过1.1万个赞
知道小有建树答主
回答量:1070
采纳率:100%
帮助的人:226万
展开全部
1.实例讲述了C#滚动字幕的实现方法,具体方法如下:
在c#中其实滚动屏幕的实现其实很简单,只需要用到Graphics.DrawString方法. Graphics.DrawString (String s, Font font, Brush brush, PointF point) 在指定位置并且用指定的 Brush 和 Font 对象绘制指定的文本字符串。
参数说明:
s 要绘制的字符串。
font 它定义字符串的文本格式。
brush 它确定所绘制文本的颜色和纹理。
point 结构,它指定所绘制文本的左上角。
其中,要用到的就是point函数,通过控制它的X或Y参数来控制文字的偏移量.下面以水平滚动字幕为例.
2.private Label label = new Label();
public string text="csdn baihe_591";
private void FrmShow_Load(object sender, EventArgs e)
{
this.label.Location = new Point(149, 13);
this.label.Size = new Size(134, 16);
this.Controls.Add (label);
this.label.Text = "";
this.timer1.Enabled = true;
this.timer1.Interval = 500;
p = new PointF(this.label.Size.Width, 0);
}
PointF p;
Font f = new Font("宋体", 10);
Color c = Color.White;
string temp;
private void timer1_Tick(object sender, EventArgs e)
{
Graphics g = this.label.CreateGraphics();
SizeF s = new SizeF();
s = g.MeasureString(text, f);//测量文字长度
Brush brush = Brushes.Black;
g.Clear(c);//清除背景
if (temp != text)//文字改变时,重新显示
{
p = new PointF(this.label.Size.Width, 0);
temp = text;
}
else
p = new PointF(p.X - 10, 0);//每次偏移10
if (p.X <= -s.Width)
p = new PointF(this.label.Size.Width, 0);
g.DrawString(text, f, brush, p);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
春素秋页
2008-04-14 · TA获得超过141个赞
知道小有建树答主
回答量:174
采纳率:0%
帮助的人:0
展开全部
思想如下:
1,在程序的界面添加一个控件 用于现在滚动文本
2,在主方法中写一个方法来控制文本的滚动
3,需要用到time控件来计时
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
圣龙兽c0
推荐于2016-02-22 · TA获得超过5399个赞
知道小有建树答主
回答量:765
采纳率:0%
帮助的人:382万
展开全部
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
namespace Caster
{
/// <summary>
/// MyMoveChar 的摘要说明。
/// </summary>
public class MyMoveChar : System.Windows.Forms.UserControl
{
private System.Windows.Forms.Timer timer;
private System.Windows.Forms.Label label;
private System.ComponentModel.IContainer components;
public MyMoveChar()
{
// 该调用是 Windows.Forms 窗体设计器所必需的。
InitializeComponent();
timer.Tick+=new EventHandler(timer_Tick);
// TODO: 在 InitializeComponent 调用后添加任何初始化
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region 组件设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.label = new System.Windows.Forms.Label();
this.timer = new System.Windows.Forms.Timer(this.components);
this.SuspendLayout();
//
// label
//
this.label.AutoSize = true;
this.label.Location = new System.Drawing.Point(320, 0);
this.label.Name = "label";
this.label.Size = new System.Drawing.Size(0, 17);
this.label.TabIndex = 0;
//
// timer
//
this.timer.Enabled = true;
//
// MyMoveChar
//
this.Controls.Add(this.label);
this.Name = "MyMoveChar";
this.Size = new System.Drawing.Size(320, 32);
this.ResumeLayout(false);
}
#endregion
#region propertys
public new System.Drawing.Size Size
{
get
{
return base.Size;
}
set
{
base.Size=value;
label.Location= new System.Drawing.Point(label.Location.X,(Size.Height-label.Size.Height)/2);
}
}
public override System.Drawing.Font Font
{
get
{
return base.Font;
}
set
{
base.Font=value;
label.Font=value;
}
}
public override String Text
{
get
{
return label.Text;
}
set
{
label.Text=value;
label.Location=new System.Drawing.Point(this.Size.Width,label.Location.Y);
}
}
public override System.Drawing.Color ForeColor
{
get
{
return base.ForeColor;
}
set
{
base.ForeColor=value;
label.ForeColor=value;
}
}
public override System.Drawing.Color BackColor
{
get
{
return base.BackColor;
}
set
{
base.BackColor=value;
label.BackColor=value;
}
}
public int Interval
{
get
{
return timer.Interval;
}
set
{
timer.Interval=value;
}
}
#endregion
private void timer_Tick(object sender, EventArgs e)
{
if((label.Location.X+label.Size.Width)>0)
label.Location=new System.Drawing.Point(label.Location.X-1,label.Location.Y);
else
label.Location=new System.Drawing.Point(this.Size.Width,label.Location.Y);
}
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式