效果图

素材

代码

 Dim B0, B1, B3 As Bitmap
Private B As Bitmap = Nothing
Private Sub Loading_Load(sender As Object, e As EventArgs) Handles MyBase.Load
B0 = My.Resources.P0.Clone
B1 = My.Resources.P1.Clone
B3 = My.Resources.P3.Clone
Me.Show()
End Sub Private Sub Play()
For I As Single = 0.1 To 1.5 Step 0.02
If Me.Disposing Then Exit Sub
MakeBg(I)
Threading.Thread.Sleep(10)
Application.DoEvents()
Next
MakeBg(1.5)
Threading.Thread.Sleep(2000)
For I As Single = 255 To 0 Step -1
If Me.Disposing Then Exit Sub
DSAPI.控件.Form窗体.透明窗体样式显示图像(Me, B, I)
Application.DoEvents()
Next
End Sub
Private Sub MakeBg(Db As Single)
Try
If B IsNot Nothing Then B.Dispose()
B = Nothing
If Db < 1.5 Then
B = B0.Clone
Using G As Graphics = Graphics.FromImage(B)
G.Clip = New Region(New Rectangle(0, 0, 625, 656))
Dim _B1 As Bitmap = New Bitmap(625, 656)
Using G2 As Graphics = Graphics.FromImage(_B1)
G2.Clip = New Region(New RectangleF(0, 0, 625, 656))
Dim W, H As Integer
Dim _B As Bitmap = MakeImg(Db)
W = (625 - _B.Width) / 2
H = (656 - _B.Height) / 2
G2.DrawImage(_B, New Rectangle(W, H, _B.Width, _B.Height), New Rectangle(0, 0, _B.Width, _B.Height), GraphicsUnit.Pixel)
_B.Dispose()
End Using
Dim _B3 As Bitmap = B1.Clone
DSAPI.图形图像.应用透明度遮罩(_B3, _B1)
_B1.Dispose()
G.DrawImage(_B3, New Rectangle(0, 0, 625, 656), New Rectangle(0, 0, 625, 656), GraphicsUnit.Pixel)
End Using
Else
B = B1.Clone
End If
DSAPI.控件.Form窗体.透明窗体样式显示图像(Me, B, 255)
Catch
End Try
End Sub Private Sub Loading_Shown(sender As Object, e As EventArgs) Handles Me.Shown
For I As Single = 0 To 255
DSAPI.控件.Form窗体.透明窗体样式显示图像(Me, B0, I)
Application.DoEvents()
If Me.Opacity = 0 Then Me.Opacity = 1
Next
Play()
Me.Close()
End Sub Private Function MakeImg(Db As Single) As Bitmap
Try
Dim W, H As Integer
W = 410 * Db
H = 431 * Db
Dim BB As New Bitmap(W, H)
Using G As Graphics = Graphics.FromImage(BB)
G.Clip = New Region(New Rectangle(0, 0, W, H))
G.DrawImage(B3, New Rectangle(0, 0, W, H), New Rectangle(0, 0, 410, 431), GraphicsUnit.Pixel)
End Using
Return BB
Catch
Return Nothing
End Try
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. Angular2+ 使用 Protractor 与 Modify Header Value (HTTP Headers) 插件 完成 Windows Authorization 验证

    入职新公司第二周,接到了一个E2E测试的任务,两天的时间把所有的测试条件都写完了,结果剩下三天都卡在了Windows Authorization验证这里. 先说一下公司项目Authorize的逻辑 第 ...

  2. Charpter3 名字 作用域 约束

    一个对象拥有其语义价值的区域<其作用域 当一个变量将不再被使用,那它应该被理想的回收机制回收.但现实是我们仅当一个变量离开了其作用域,或变成不可访问,才考虑回收. 然而,作用域规则有其优点:1. ...

  3. Drrols规则引擎

    1.什么是规则引擎? 规则引擎是一种嵌套在应用程序中的组件,它实现了将业务规则从应用程序代码中分离出来.规则引擎使用特定的语法编写业务规则,规则引擎可以接受数据输入.解释业务规则.并根据业务规则做出相 ...

  4. 了解Scala 宏

    前情回顾 了解Scala反射介绍了反射的基本概念以及运行时反射的用法, 同时简单的介绍了一下编译原理知识, 其中我感觉最为绕的地方, 就属泛型的几种使用方式了. 而最抽象的概念, 就是对于符号和抽象树 ...

  5. 学习攻略丨如何进阶为一名Web安全高手?

    学习Web安全的小伙伴很多,但是能成为Web安全高手却很少,很多人都是从入门到放弃,是真的太难还是学习方法不对? 对于基础薄弱的人来说,一般都是从XSS.SQL注入等简单的漏洞研究入门的.除了了解各种 ...

  6. javascript数组的常用算法解析

    一.不改变原数组,返回新数组(字符串) 1.concat()   连接两个或者多个数组,两边的原始数组都不会变化,返回的是被连接数组的一个副本. 2.join()  把数组中所有的元素放入到一个字符串 ...

  7. Python-炫酷二维码

    一.环境 首先是安装python环境,如果没有安装python环境看此处 二.myqr     myqr 其实是一个 python 的脚本,可以生产二维码图片,作者也对python脚本进行了打包,在 ...

  8. ES 14 - (底层原理) Elasticsearch内部如何处理不同type的数据

    目录 1 type的作用 2 type的底层数据结构 3 探究type的存储结构 3.1 创建索引并配置映射 3.2 添加数据 3.3 查看存储结构 4 关于type的最佳实践 1 type的作用 在 ...

  9. React + TypeScript:元素引用的传递

    React 中需要操作元素时,可通过 findDOMNode() 或通过 createRef() 创建对元素的引用来实现.前者官方不推荐,所以这里讨论后者及其与 TypeScript 结合时如何工作. ...

  10. Python 转化成 PB 格式数据

    一.概述 Protocol Buffers 是 Google 公司开发的一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化.它很适合做数据存储或 RPC 数据交换格式.可用于通讯 ...