C#滚动字幕的实现方法
作者:shichen2014 时间:2022-05-27 04:32:31
本文实例讲述了C#滚动字幕的实现方法,分享给大家供大家参考。具体方法如下:
在c#中其实滚动屏幕的实现其实很简单,只需要用到Graphics.DrawString方法. Graphics.DrawString (String s, Font font, Brush brush, PointF point) 在指定位置并且用指定的 Brush 和 Font 对象绘制指定的文本字符串。
参数说明:
s 要绘制的字符串。
font 它定义字符串的文本格式。
brush 它确定所绘制文本的颜色和纹理。
point 结构,它指定所绘制文本的左上角。
其中,我们要用到的就是point函数,通过控制它的X或Y参数来控制文字的偏移量.下面以水平滚动字幕为例.
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);
}
希望本文所述对大家的C#程序设计有所帮助。
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
WinForm中KeyDown,KeyPress和KeyUp的顺序与区别解析
Java 语言实现清除带 html 标签的内容方法
详解通过JDBC进行简单的增删改查(以MySQL为例)
![](https://img.aspxhome.com/file/2023/5/58035_0s.png)
C# StringBuilder和string
详解JVM中的GC调优
![](https://img.aspxhome.com/file/2023/6/111456_0s.jpg)
C#获取程序文件相关信息的方法
一文搞懂SpringBoot如何利用@Async实现异步调用
![](https://img.aspxhome.com/file/2023/6/63846_0s.png)
Java设计模式之模版方法模式简介
![](https://img.aspxhome.com/file/2023/0/61130_0s.jpg)
Android仿微信清理内存图表动画(解决surfaceView屏幕闪烁问题)demo实例详解
![](https://img.aspxhome.com/file/2023/7/111737_0s.gif)
聊聊Spring AOP @Before @Around @After等advice的执行顺序
![](https://img.aspxhome.com/file/2023/3/86853_0s.jpg)
Java spring 通过注解方式创建对象的示例详解
![](https://img.aspxhome.com/file/2023/7/72407_0s.jpg)
JAVA 字符串加密、密码加密实现方法
Flink支持哪些数据类型?
mybatis if test判断BigDecimal遇到的坑及解决
![](https://img.aspxhome.com/file/2023/6/70276_0s.png)
详解Eclipse提交项目到GitHub以及解决代码冲突
![](https://img.aspxhome.com/file/2023/6/78966_0s.png)
解析C#设计模式之单例模式
Java8通过Function获取字段名的步骤
SpringBoot实现过滤器和拦截器的方法
WPF+ASP.NET SignalR实现动态折线图的绘制
![](https://img.aspxhome.com/file/2023/1/80051_0s.png)