效果图

素材

代码

  1. Dim B0, B1, B3 As Bitmap
  2. Private B As Bitmap = Nothing
  3. Private Sub Loading_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  4. B0 = My.Resources.P0.Clone
  5. B1 = My.Resources.P1.Clone
  6. B3 = My.Resources.P3.Clone
  7. Me.Show()
  8. End Sub
  9.  
  10. Private Sub Play()
  11. For I As Single = 0.1 To 1.5 Step 0.02
  12. If Me.Disposing Then Exit Sub
  13. MakeBg(I)
  14. Threading.Thread.Sleep(10)
  15. Application.DoEvents()
  16. Next
  17. MakeBg(1.5)
  18. Threading.Thread.Sleep(2000)
  19. For I As Single = 255 To 0 Step -1
  20. If Me.Disposing Then Exit Sub
  21. DSAPI.控件.Form窗体.透明窗体样式显示图像(Me, B, I)
  22. Application.DoEvents()
  23. Next
  24. End Sub
  25. Private Sub MakeBg(Db As Single)
  26. Try
  27. If B IsNot Nothing Then B.Dispose()
  28. B = Nothing
  29. If Db < 1.5 Then
  30. B = B0.Clone
  31. Using G As Graphics = Graphics.FromImage(B)
  32. G.Clip = New Region(New Rectangle(0, 0, 625, 656))
  33. Dim _B1 As Bitmap = New Bitmap(625, 656)
  34. Using G2 As Graphics = Graphics.FromImage(_B1)
  35. G2.Clip = New Region(New RectangleF(0, 0, 625, 656))
  36. Dim W, H As Integer
  37. Dim _B As Bitmap = MakeImg(Db)
  38. W = (625 - _B.Width) / 2
  39. H = (656 - _B.Height) / 2
  40. G2.DrawImage(_B, New Rectangle(W, H, _B.Width, _B.Height), New Rectangle(0, 0, _B.Width, _B.Height), GraphicsUnit.Pixel)
  41. _B.Dispose()
  42. End Using
  43. Dim _B3 As Bitmap = B1.Clone
  44. DSAPI.图形图像.应用透明度遮罩(_B3, _B1)
  45. _B1.Dispose()
  46. G.DrawImage(_B3, New Rectangle(0, 0, 625, 656), New Rectangle(0, 0, 625, 656), GraphicsUnit.Pixel)
  47. End Using
  48. Else
  49. B = B1.Clone
  50. End If
  51. DSAPI.控件.Form窗体.透明窗体样式显示图像(Me, B, 255)
  52. Catch
  53. End Try
  54. End Sub
  55.  
  56. Private Sub Loading_Shown(sender As Object, e As EventArgs) Handles Me.Shown
  57. For I As Single = 0 To 255
  58. DSAPI.控件.Form窗体.透明窗体样式显示图像(Me, B0, I)
  59. Application.DoEvents()
  60. If Me.Opacity = 0 Then Me.Opacity = 1
  61. Next
  62. Play()
  63. Me.Close()
  64. End Sub
  65.  
  66. Private Function MakeImg(Db As Single) As Bitmap
  67. Try
  68. Dim W, H As Integer
  69. W = 410 * Db
  70. H = 431 * Db
  71. Dim BB As New Bitmap(W, H)
  72. Using G As Graphics = Graphics.FromImage(BB)
  73. G.Clip = New Region(New Rectangle(0, 0, W, H))
  74. G.DrawImage(B3, New Rectangle(0, 0, W, H), New Rectangle(0, 0, 410, 431), GraphicsUnit.Pixel)
  75. End Using
  76. Return BB
  77. Catch
  78. Return Nothing
  79. End Try
  80. End Function

  原理:

1 缩放黑影大小,并绘制到和花图一样的图片上

2 使用黑影图作为花图的透明度遮罩,有黑影的地方不透明,其他地方透明

3 将花图绘制到灰白的花上

DSAPI 3张图片实现花开动画的更多相关文章

  1. Android动画:模拟开关按钮点击打开动画(属性动画之平移动画)

    在Android里面,一些炫酷的动画确实是很吸引人的地方,让然看了就赏心悦目,一个好看的动画可能会提高用户对软件的使用率.另外说到动画,在Android里面支持3种动画: 逐帧动画(Frame Ani ...

  2. 【转】花开正当时,十四款120/128GB SSD横向评测

    原文地址:http://www.expreview.com/19604-all.html SSD横评是最具消费指导意义的评测文章,也是各类热门SSD固态硬盘的决斗疆场.SSD评测在行业内已经有不少网站 ...

  3. WPF自动隐藏的消息框(鼠标放上去将一直显示,移开动画继续),提供normal和error两种边框。

    原地址-> http://www.cnblogs.com/yk250/p/5660777.html 介绍:传统的确定,取消,OK,CANCAL之类的对话框太繁琐了,由于项目需要而诞生的仿手机式提 ...

  4. iOS开动画效果之──实现 pushViewController 默认动画效果

    在开发中,视图切换会常常遇到,有时我们不是基于导航控制器的切换,但实际开发中,有时需要做成push效果,下面将如何实现push和pop 默认动画效果代码实例: 一.push默认动画效果 CATrans ...

  5. [luogu3810][bzoj3262]陌下花开【cdq分治】

    题目描述 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),用三个整数表示.现在要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一朵花B要美丽,当且仅Sa&g ...

  6. bzoj3438: 小M的作物(那年花开最小割)

    3438: 小M的作物 题目:传送门 题解: 最小割标准水题(做了几天的最小割之后表示是真的水) 为什么水:博主已经做过两道基本一样的题目了... 详情参考:bzoj3894 代码: #include ...

  7. Python 树表查找_千树万树梨花开,忽如一夜春风来(二叉排序树、平衡二叉树)

    什么是树表查询? 借助具有特殊性质的树数据结构进行关键字查找. 本文所涉及到的特殊结构性质的树包括: 二叉排序树. 平衡二叉树. 使用上述树结构存储数据时,因其本身对结点之间的关系以及顺序有特殊要求, ...

  8. [置顶] 使用红孩儿工具箱完成基于Cocos2d-x的简单游戏动画界面

    [Cocos2d-x相关教程来源于红孩儿的游戏编程之路CSDN博客地址:http://blog.csdn.net/honghaier 红孩儿Cocos2d-X学习园地QQ3群:205100149,47 ...

  9. android 帧动画的实现及图片过多时OOM解决方案(一)

    一,animation_list.xml中静态配置帧动画的顺序,如下: <?xml version="1.0" encoding="utf-8"?> ...

随机推荐

  1. 查看Linux下系统资源占用常用命令(top、free、uptime)

    本文介绍下,在linux中查看系统资源占用的三个命令:top.free.uptime,通过实例学习下它们的用法,有需要的朋友参考下 一,top命令 1.作用top命令用来显示执行中的程序进程,使用权限 ...

  2. Go中原始套接字的深度实践

    1. 介绍 2. 传输层socket 2.1 ICMP 2.2 TCP 2.3 传输层协议 3. 网络层socket 3.1 使用Go库 3.2 系统调用 3.3 网络层协议 4. 总结 4.1 参考 ...

  3. 干货,一文带你超详细了解Session的原理及应用

    session 简介 session 是我们 jsp 九大隐含对象的一个对象. session 称作域对象,他的作用是保存一些信息,而 session 这个域对象是一次会话期间使用同一个对象.所以这个 ...

  4. Python练习:九九乘法表

    打印 n * n 的乘法表 #打印 9*9 乘法表 def Multiplication(n): # n - 定义打印的行数 max_len = len(str((n)**2)) #计算最大值的占位( ...

  5. 兄弟俩畅游Tomcat城市的SpringMVC科技园区

    Tomcat城市 Tomcat这座城市的历史相当悠久了,经历过几次大的变迁后,呈现出非常明显的地域特征. 从城市往西走,过了城乡结合部以后,可以说是满目疮痍.一片破败,这就是Servlet地区,这座城 ...

  6. C# - 为引用类型重定义相等性

    通常情况下引用类型的相等性是不应该被重定义/重写的. 例如两个引用类型的变量 x 和 y,如果这样写:if(x == y) {...},那么大家都明白,这个比较的是引用的相等性. 但是有少数情况下,也 ...

  7. Asp.Net Core&Docker部署到树莓派3B中

    花了一点时间将吃灰数月的树莓派装上了Docker,并在容器中部署了一个Asp.Net Core应用程序,通过花生壳映射树莓派中的程序,可以使用外网访问树莓派,玩起来很有意思(外网访问地址:http:/ ...

  8. SpringBoot自动配置原理

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 回顾前面Spring的文章(以学习的顺序排好): S ...

  9. Gradle中的闭包

    Gradle是基于Groovy的DSL基础上的构建工具,Gradle中的闭包,其原型上实际上即Groovy中闭包.而在表现形式上,其实,Gradle更多的是以约定和基于约定基础上的配置去展现.但本质上 ...

  10. 系统的讲解 - PHP 缓存技术

    目录 概述 浏览器缓存 文件缓存 NoSQL缓存 WEB服务器缓存 Opcode缓存 小结 关于缓存的常见问题 概述 缓存已经成了项目中是必不可少的一部分,它是提高性能最好的方式,例如减少网络I/O. ...