c#中通过Graphics.DrawString实现滚动字幕的原理和代码实例

在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语言知识拓展:

一个C语言冒泡排序法的简单程序

main()

{

int i,j,temp;

int a[10];

for(i=0;i<10;i++)

scanf ("%d,",&a[i]);

for(j=0;j<=9;j++)

{ for (i=0;i<10-j;i++)

if (a[i]>a[i+1])

{ temp=a[i];

a[i]=a[i+1];

a[i+1]=temp;}

}

for(i=1;i<11;i++)

printf("%5d,",a[i] );

printf("\n");

}

--------------

冒泡算法

冒泡排序的算法分析与改进

交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。

应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。

冒泡排序

1、排序方法

将被排序的记录数组R[1..n]垂直排列,每个记录R看作是重量为R.key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。

(1)初始

R[1..n]为无序区。

(2)第一趟扫描

从无序区底部向上依次比较相邻的两个气泡的重量,若发现轻者在下、重者在上,则交换二者的位置。即依次比较(R[n],R[n-1]),(R[n-1],R[n-2]),…,(R[2],R[1]);对于每对气泡(R[j+1],R[j]),若R[j+1].key

第一趟扫描完毕时,"最轻"的气泡就飘浮到该区间的顶部,即关键字最小的记录被放在最高位置R[1]上。

(3)第二趟扫描

扫描R[2..n]。扫描完毕时,"次轻"的气泡飘浮到R[2]的位置上……

最后,经过n-1 趟扫描可得到有序区R[1..n]

注意:

第i趟扫描时,R[1..i-1]和R[i..n]分别为当前的有序区和无序区。扫描仍是从无序区底部向上直至该区顶部。扫描完毕时,该区中最轻气泡飘浮到顶部位置R上,结果是R[1..i]变为新的有序区。

2、冒泡排序过程示例

对关键字序列为49 38 65 97 76 13 27 49的文件进行冒泡排序的过程

3、排序算法

(1)分析

因为每一趟排序都使有序区增加了一个气泡,在经过n-1趟排序之后,有序区中就有n-1个气泡,而无序区中气泡的重量总是大于等于有序区中气泡的重量,所以整个冒泡排序过程至多需要进行n-1趟排序。

若在某一趟排序中未发现气泡位置的交换,则说明待排序的无序区中所有气泡均满足轻者在上,重者在下的原则,因此,冒泡排序过程可在此趟排序后终止。为此,在下面给出的算法中,引入一个布尔量exchange,在每趟排序开始前,先将其置为FALSE。若排序过程中发生了交换,则将其置为TRUE。各趟排序结束时检查exchange,若未曾发生过交换则终止算法,不再进行下一趟排序。

(2)具体算法

void BubbleSort(SeqList R)

{ //R(l..n)是待排序的文件,采用自下向上扫描,对R做冒泡排序

/article/20141020/25814.htmlwww.xyjys.comtrue/article/20141020/25814.htmlTechArticlec# 滚动字幕的实现, 在c#中其实滚动屏幕的实现很简单,只需要用到Graphics.DrawString方法. Graphics.DrawString (String s, Font font, Brush brush, PointF point) 在指定位置并且用指定的 Brush 和 Font 对象绘...

c语言滚动字幕的原理编程,c#中通过Graphics.DrawString实现滚动字幕的原理和代码实例...相关推荐

  1. 计算机在流体力学中的应用,流体力学原理在游泳中的应用

    流体力学原理在游泳中的应用 (2006-03-20 15:35:56) 流体力学原理在游泳中的应用 水的自然特性与人体的飘浮能力 凡涉及水环境的运动项目,参与者都不可忽视水的一条最为重要的自然属性―― ...

  2. 非洲瓜哇JAVA布的特点_java语言的基本特性以及编程细节

    前言 java语言的学习是一个体系,所以如果想要对java的编程有一个很精通的一个掌握,它离不开很多基础的知识点,比如JVM的原理.java多线程并发编程.数据结构等等.所以我这里对我学习的java的 ...

  3. c语言log_C语言最大难点揭秘:编程的祸根!

    本文将带您了解一些良好的和内存相关的编码实践,以将内存错误保持在控制范围内.内存错误是 C 和 C++ 编程的祸根:它们很普遍,认识其严重性已有二十多年,但始终没有彻底解决,它们可能严重影响应用程序, ...

  4. 如何打开电脑c语言窗口,C语言控制台窗口图形界面编程(五). -电脑资料

    控制文本的移动是控制台窗口界面编程的一个很重要的功能,有了这个功能我们可以实现界面的滚动, BOOL ScrollConsoleScreenBuffer(      //文本移动函数 HANDLE h ...

  5. 游戏编程基础(五)背景地图滚动显示

    在游戏过程中,背景地图需要跟着人物的移动而动态的滚动变换.C++游戏编程基础中介绍了2D游戏中常用的3种动态背景表现手法.其原理和实现技巧分析如下: 方法一:单一背景滚动         原理是:利用 ...

  6. c语言程序设计mp4,[原创]Nisy编程教学视频C语言/C++语言MP4版

    2011年左右录制的视频,现在没有精力去做教学辅导,全部免费分享给大家. 水平有限,难免视频中会出现一些疏漏和错误,欢迎大家批评指正. 学习过程中有问题可以加入我们的球球群24083233,一起交流讨 ...

  7. c语言图形方式初始化,c语言图形方式下的编程.doc

    c语言图形方式下的编程.doc C语言图形方式下的编程 学习目标 ·了解PC显示系统的结构 ·C语言图形初始化的一般方法 ·C语言常用的图形处理函数 显示系统简介 PC机显示系统一般是由显示器和显示卡 ...

  8. c语言是函数式原型的编程,编程范式|程序世界里的编程范式,探索编程本质

    最近看了一些关于编程范式的文章,简要做一些小结和记录 什么是编程范式 在现实生活中,为了适配各种规格的螺帽,我们需要许多种类的螺丝刀. 在编程世界中,静态语言有许多种类的数据类型. 不过,我们可以发现 ...

  9. Java并发编程包中atomic的实现原理

    转载自   Java并发编程包中atomic的实现原理 这是一篇来自粉丝的投稿,作者[林湾村龙猫]最近在阅读Java源码,这一篇是他关于并发包中atomic类的源码阅读的总结.Hollis做了一点点修 ...

最新文章

  1. 用U盘破除XP管理员密码
  2. 百度地图API开发指南
  3. 启动Spark Shell,在Spark Shell中编写WordCount程序,在IDEA中编写WordCount的Maven程序,spark-submit使用spark的jar来做单词统计
  4. 求完全二叉树的结点个数
  5. “寒门状元之死”文章引热议 京东徐雷:三流文学作品 多看书吧
  6. python 运行电脑卡死_Python入门 5——循环语句及条件判断
  7. 2022-03-23 转载C++中std::auto_ptr被废弃,由std::unique_ptr代替的原因
  8. [spring]用IEDA创建spring boot项目
  9. (转)国内各家智能投顾比较
  10. 从零开始学英语 (洪恩教学光盘 8CD)
  11. windows出于安全原因某些设置由系统管理员管理解决方法
  12. python中间件的作用_graphene-python学习笔记(12)中间件
  13. 图片裁切以及图片预览的过程
  14. 运用深度学习进行文本生成
  15. 阿里天池大数据之移动推荐算法大赛总结及代码全公布
  16. 北京市专精特新中小企业认定要求及流程,补贴60万
  17. VSCode打开.c文件出现中文乱码解决办法
  18. 山东大学2019-2020数据仓库与数据挖掘期末考试
  19. 职场七年之痒,如何抉择
  20. Meta Post v3.3.1(带有ANSYS和METApsot的LS-DYNA的前后处理器)

热门文章

  1. 汇编指令: JO、JNO、JB...
  2. HTML5---H5---HTML网页常用的标签和新增的标签
  3. Hadoop官网翻译 (HDFS命令)
  4. 6大科研神器,科研党必备,至少提高效率90%
  5. satd 与 sad
  6. 使用MySQL可视化客户端,例如SQLyog,Navicat等,只编写SQL语句,使用2的N次方原理,快速初始化百万千万条数据
  7. java基础语法if语句、循环
  8. 为什么要限制兑换外汇额度?
  9. 2021计算机一级新增知识点,2021年全国计算机等级考试改革有哪些内容
  10. 经典前缀和+差分问题之小明的彩灯(c++)