65.9K
CodeProject 正在变化。 阅读更多。
Home

VB.NET 流体效果图像框

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.82/5 (21投票s)

2003年3月7日

4分钟阅读

viewsIcon

507665

downloadIcon

4989

一篇关于 VB.NET 涟漪图像控件的文章

Sample Image - fluid_effect.jpg

引言

为你的启动画面增添一抹色彩——字面意思!

终于有了一个 VB.NET 实现的经典涟漪/水/飞溅/流体效果!这是 Christian Tratz 的 C# 实现的移植和增强版本。

背景

即使是 VB.NET 用户也应该能够拥有惊人的效果。市面上有很多流体效果的实现,大多数是用 C 语言写的。这是 C# 实现的 VB.NET 移植版本。我还开放了一些额外的属性,让你可以通过编程更精确地控制效果。通过调整参数,你可以创造出非常酷炫的效果——让你的图像看起来像橡胶,或者在油面下,或者使用普通的水物理效果。只需查看示例应用程序和代码中的文档。

有关其他版本,请访问 http://www.x-caiver.com/Software

使用代码

只需几步即可设置完成

  1. 将 fluidEffect.vb 添加到你的项目中
  2. 在你的窗体上,添加一个 Panel 对象。适当地设置其位置/大小/名称。暂时不要向其添加图形。
  3. 保存你的窗体,然后切换到代码视图并关闭设计器视图。
  4. 搜索 Panel 的名称,确保选择了“搜索隐藏文本”选项。你要找的是两个实例。它们都位于“Windows Form Designer generated code”区域内。下面的两个示例假设你将 Panel 命名为 myFluidPanel。
    • 请注意,VS.NET 倾向于将这两行更改为 <yournamespace>.fluidEffect.fluidEffectControl,然后设计器会感到困惑,并且完全不会显示它,直到你回到代码中进行修复。
'This was the original line. Comment it out and add the line below

'Friend WithEvents myFluidPanel As System.Windows.Forms.Panel

Friend WithEvents myFluidPanel As fluidEffect.fluidEffectControl
'This was the original line. Comment it out and add the line below

'Me.myFluidPanel = New System.Windows.Forms.Panel()

Me.myFluidPanel = New fluidEffect.fluidEffectControl()
  1. 再次保存。现在你可以打开设计器视图中的窗体了
  2. 选择你的 Panel(现在是 fluidEffect),然后滚动到其属性表的“Misc”部分,并将 ImageBitmap 条目设置为你的位图。(目前流体效果只支持位图。它可以在设计器中显示 jpg(或 Panel 可以显示的任何格式),但在运行时将无法工作)
  3. 配置任何其他你想要更改的设置,保存,你就完成了!

你可以更改的设置

ImageBitmap - 这是显示的图像。目前仅支持位图
dropHeight - 值越大,初始液滴的高度越高
dropRadius - 值越大,初始涟漪的半径越大
Dampener - 值越大,涟漪持续的时间越长。4 是正常值。2 和 1 会使流体非常粘稠,涟漪很快消失。值为 0 则几乎没有涟漪
TheScale - 值为 0 时,涟漪位图的大小与图像相同,值为 1 时为一半大小,依此类推。对于大图像,更大的值有助于减少处理时间。另外,如果你在窗体上缩放图像,应该尝试值 1 及以上,以使液滴相对于鼠标正确定位
StopRipples - 在正常使用时,此值应设置为 False。将其设置为 True 将冻结涟漪。再次单击图像将启动新的涟漪,并解冻所有现有涟漪。

注意事项

  1. 目前仅支持位图,但你可以从设计器视图中为 Panel 分配 jpg/icn/等文件
  2. 对于较大的图像,性能会很快下降。我的一张 500x400 的图像在选定的设置下只能获得大约 2 帧/秒
  3. 尚未捕获的错误情况。启动演示应用程序,并快速多次单击,你将导致应用程序崩溃。(我能够通过缓慢单击让 30 个液滴同时存在,但如果我快速单击,我可以在 5 个液滴后崩溃应用程序)
  4. 当 2 和 3 问题解决后,我将重新激活拖动事件处理程序。这可以让你在水上“绘画”,就像用手指在水上滑动一样。

关注点

VB.NET 并非 C# 那样在数学计算和内存交换方面是强大的。此代码在负载下会很快变慢。我的一个应用程序有一个 500 x 400 像素的启动画面,带有透明部分。我无法从中获得良好的帧率。较小的图像效果很好。我选择了其中一个启动画面中一个 100x100 的有趣区域,它可以在实时状态下产生涟漪。

历史

  • 2003 年 2 月 18 日 - 完成 VB.NET 移植并添加了一些可配置属性。
  • 2003 年 2 月 20 日 - 为 CodeProject 制作了演示应用程序,太棒了
  • 2003 年 2 月 21 日 - VS.NET 2003 的 VB.NET 具有本地位移运算符。我将在我的网站上发布一个版本,该版本将恢复使用内联位移,而不是此处发布的 VS.NET 2003 版本中使用的位移函数。
© . All rights reserved.