【问题标题】:How can I display animated text in C#如何在 C# 中显示动画文本
【发布时间】:2012-12-04 18:01:58
【问题描述】:

我有一个四连冠冠军赛。有没有一种方法可以以动画方式显示文本?我的意思是,在每轮显示第 1 轮之后,屏幕上写着。第 1 轮结束后显示第 2 轮。

我的意思是不是以标签的形式显示文本,而是像在线游戏中显示的文本只是出现在屏幕上并在几秒钟后消失..不知道这是否可能!

【问题讨论】:

    标签: c# forms animation text


    【解决方案1】:

    你需要在游戏获胜时通过获取表单Graphics对象手动在表单上绘制。

    Graphics g = this.CreateGraphics();
    g.DrawString("Game Won!", DefaultFont, Brushes.Red, x,y);
    

    这是上下文中的表单,x,y 是绘制文本的坐标

    当然,正如其他人所提到的,您必须做一个计时器来更改 x、y 或其他属性,例如每个动画帧的字体大小。您需要在单独的线程上执行此操作并双缓冲结果

    【讨论】:

    • 是的,这是个好主意,非常感谢!但是我可以在表单上的多个组件上绘画吗?如果你只是做图形 g = this.CreateGraphics(); ,我会为所有表格创建图形,是吗?所以绘制的Item会在所有组件之上,然后我就在时间结束后清除它?
    • 我不太确定,因为 winforms 不会让您真正使用项目的 zindex,您可能必须在最上面的项目上绘图。这真的不是一个合适的平台。首先尝试绘制一个字符串,不要担心动画。当游戏获胜时,您总是可以在表单中添加一个新的面板控件并在上面绘制。
    • 现在我想了想,您可以制作一个自定义控件并覆盖 OnPaint 方法以在其上创建动画,居中和成比例,然后将其添加到表单的顶部。
    • 是的,我想我可以做到这一点。如果顶部的面板可以是透明的,以便其他组件在字符串后面仍然可见!
    • 我记得需要做类似的事情,我很确定你不能制作透明面板。
    【解决方案2】:

    我不知道您所说的动画到底是什么意思,但一般来说,您可以创建一个计时器,以您希望的动画方式“动画化”您的文本,例如每 20 毫秒左右。因此,例如,如果您只想将文本从右向左移动,您可以在计时器经过的处理程序中设置 myText.X += 5 或类似的东西。

    【讨论】:

    • 我的意思是不是以标签的形式显示文本,而是像在线游戏中显示的文本只是出现在屏幕上并在几秒钟后消失..不知道是否可能!
    • @studentProgrammer:弹出工具提示?或者使用计时器在几秒钟后设置myLabel.Visible = false
    • hmm 我可以显示标签并在几秒钟后使其可见,是的,但是有没有一种方法可以在表单中的所有其他组件前面显示标签?请问什么是工具提示?我是表单新手,以前从未使用过!感谢您的帮助!
    猜你喜欢
    • 2020-05-05
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多