服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - C# Winform实现波浪滚动效果

C# Winform实现波浪滚动效果

2022-10-18 11:51四原色 C#

这篇文章主要为大家详细介绍了C# Winform实现波浪滚动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C# Winform实现波浪滚动效果的具体代码,供大家参考,具体内容如下

设计思路

1、首先,理解一个概念:正弦波,余弦波。相信接受过九年义务教育的同志都清楚,
听说某华大学的高材生表示小学一年级就会计算三角函数,~~~~。

2、本人使用的是C#实现的,至于有人说JAVA效率更高,那也可以使用JAVA,只要原理清晰就ok.

3、碍于本人算法技术的局限,最终产生的效果并不是最优解,人山人海的CSDN里希望能有读者看完我的见解后能提出更好的算法思想!:)

4、既然是平面运动,我们先从具体的点说起:

(1)每一个点都是按照规则的圆周轨迹运动的,其次每一次变化每个点的横坐标位置根据sin()函数计算,纵坐标根据cos()函数计算。
(2)对于每一列的点,他们的横坐标根据M(对应代码中的double型变量M值,代表圆周运动的角度,以下m同理)的值来依次偏移,
(3)对于每一行的点 ,他们的纵坐标根据m(对应代码中的double型变量m值)的值来依次偏移,

C# Winform实现波浪滚动效果

5、尝试过程有:

【1】、对单个点的横纵坐标均不设置偏移,效果入图:

C# Winform实现波浪滚动效果

【2】、仅对纵坐标设置偏移的效果:

C# Winform实现波浪滚动效果

【3】、横纵坐标都设置偏移的效果见下面的设计效果。

设计效果

C# Winform实现波浪滚动效果

具体代码

不想写注释,毕竟代码量少。
但是还是想说明一下,记得添加一个Timer控件,具体的Interval值自己设置,这里设置的是10,值越小,波浪滚得越剧烈。

private void Form1_Load(object sender, EventArgs e)
  {
   g = this.CreateGraphics();
   g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
   g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
   g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;

   timer1.Start();
  }
  Graphics g;
  double step1 = 0.0;

  private void drup(Point star,ref double step)
  {
   double m = 0.0;
   double s = 0.0;
   for (int i = 0; i < 10; i++)
   {
    double M = s;
    for (int j = 0; j < 10; j++)
    {
     int X = (int)(star.X + i * 30 - 25 * Math.Sin(step - 0.16 + M));
     int Y = (int)(star.Y + j * 30 - 25 * Math.Cos(step+m-0.16));
     g.FillEllipse(new SolidBrush(this.BackColor), new Rectangle(new Point(X - 1, Y - 1), new Size(6, 6)));
     int x = (int)(star.X + i * 30 - 25 * Math.Sin(step+M));
     int y = (int)(star.Y + j * 30 - 25 * Math.Cos(step+m));
     g.FillEllipse(new SolidBrush(Color.White), new Rectangle(new Point(x, y), new Size(4, 4)));//this.Width /2 -300 + i * 20, this.Height / 2 - 300 + j * 20
     M += Math.PI / 12;
     if (j == 1)
      s = M;
    }
    m += Math.PI / 8;
   }
   step += 0.16;
  }
  private void timer1_Tick(object sender, EventArgs e)
  {
   drup(new Point(this.Width / 2 - 100, this.Height / 2 -100),ref step1);
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/qq_44140450/article/details/109897725

延伸 · 阅读

精彩推荐
  • C#C# 重写ComboBox实现下拉任意组件的方法

    C# 重写ComboBox实现下拉任意组件的方法

    C#种的下拉框ComboBox不支持下拉复选框列表与下拉树形列表等,系统中需要用到的地方使用了第三方组件,现在需要将第三方组件替换掉。这篇文章主要介绍...

    C#教程网7072021-12-08
  • C#几分钟搞懂c#之FileStream对象读写大文件(推荐)

    几分钟搞懂c#之FileStream对象读写大文件(推荐)

    这篇文章主要介绍了c#之FileStream对象读写大文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面...

    牛掰是怎么形成的7782022-07-21
  • C#C#中Socket与Unity相结合示例代码

    C#中Socket与Unity相结合示例代码

    这篇文章主要给大家介绍了关于C#中Socket与Unity相结合的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需...

    青鱼谷雨8272022-01-24
  • C#Unity键盘WASD实现物体移动

    Unity键盘WASD实现物体移动

    这篇文章主要为大家详细介绍了Unity键盘WASD实现物体移动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    weixin_3852769711942022-03-10
  • C#C#:foreach与yield语句的介绍

    C#:foreach与yield语句的介绍

    C#:foreach与yield语句的介绍,需要的朋友可以参考一下...

    C#菜鸟教程4152020-12-19
  • C#C#实现简单成绩管理系统的完整步骤

    C#实现简单成绩管理系统的完整步骤

    这篇文章主要给大家介绍了关于C#实现简单成绩管理系统的完整步骤,文中通过示例代码介绍的非常详细,对大家的学习或者使用C#具有一定的参考学习价值...

    锦城6272022-08-09
  • C#Silverlight将图片转换为byte的实现代码

    Silverlight将图片转换为byte的实现代码

    这篇文章主要介绍了Silverlight将图片转换为byte的实现代码,需要的朋友可以参考下...

    C#教程网10272021-11-02
  • C#C#实现的AES加密解密完整实例

    C#实现的AES加密解密完整实例

    这篇文章主要介绍了C#实现的AES加密解密,结合完整实例形式分析了C#实现的AES算法进行加密与解密的相关技巧,需要的朋友可以参考下...

    HTL3982021-11-30