DSAPI 3张图片实现花开动画
效果图
素材
代码
- 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张图片实现花开动画的更多相关文章
- Android动画:模拟开关按钮点击打开动画(属性动画之平移动画)
在Android里面,一些炫酷的动画确实是很吸引人的地方,让然看了就赏心悦目,一个好看的动画可能会提高用户对软件的使用率.另外说到动画,在Android里面支持3种动画: 逐帧动画(Frame Ani ...
- 【转】花开正当时,十四款120/128GB SSD横向评测
原文地址:http://www.expreview.com/19604-all.html SSD横评是最具消费指导意义的评测文章,也是各类热门SSD固态硬盘的决斗疆场.SSD评测在行业内已经有不少网站 ...
- WPF自动隐藏的消息框(鼠标放上去将一直显示,移开动画继续),提供normal和error两种边框。
原地址-> http://www.cnblogs.com/yk250/p/5660777.html 介绍:传统的确定,取消,OK,CANCAL之类的对话框太繁琐了,由于项目需要而诞生的仿手机式提 ...
- iOS开动画效果之──实现 pushViewController 默认动画效果
在开发中,视图切换会常常遇到,有时我们不是基于导航控制器的切换,但实际开发中,有时需要做成push效果,下面将如何实现push和pop 默认动画效果代码实例: 一.push默认动画效果 CATrans ...
- [luogu3810][bzoj3262]陌下花开【cdq分治】
题目描述 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),用三个整数表示.现在要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一朵花B要美丽,当且仅Sa&g ...
- bzoj3438: 小M的作物(那年花开最小割)
3438: 小M的作物 题目:传送门 题解: 最小割标准水题(做了几天的最小割之后表示是真的水) 为什么水:博主已经做过两道基本一样的题目了... 详情参考:bzoj3894 代码: #include ...
- Python 树表查找_千树万树梨花开,忽如一夜春风来(二叉排序树、平衡二叉树)
什么是树表查询? 借助具有特殊性质的树数据结构进行关键字查找. 本文所涉及到的特殊结构性质的树包括: 二叉排序树. 平衡二叉树. 使用上述树结构存储数据时,因其本身对结点之间的关系以及顺序有特殊要求, ...
- [置顶] 使用红孩儿工具箱完成基于Cocos2d-x的简单游戏动画界面
[Cocos2d-x相关教程来源于红孩儿的游戏编程之路CSDN博客地址:http://blog.csdn.net/honghaier 红孩儿Cocos2d-X学习园地QQ3群:205100149,47 ...
- android 帧动画的实现及图片过多时OOM解决方案(一)
一,animation_list.xml中静态配置帧动画的顺序,如下: <?xml version="1.0" encoding="utf-8"?> ...
随机推荐
- 查看Linux下系统资源占用常用命令(top、free、uptime)
本文介绍下,在linux中查看系统资源占用的三个命令:top.free.uptime,通过实例学习下它们的用法,有需要的朋友参考下 一,top命令 1.作用top命令用来显示执行中的程序进程,使用权限 ...
- Go中原始套接字的深度实践
1. 介绍 2. 传输层socket 2.1 ICMP 2.2 TCP 2.3 传输层协议 3. 网络层socket 3.1 使用Go库 3.2 系统调用 3.3 网络层协议 4. 总结 4.1 参考 ...
- 干货,一文带你超详细了解Session的原理及应用
session 简介 session 是我们 jsp 九大隐含对象的一个对象. session 称作域对象,他的作用是保存一些信息,而 session 这个域对象是一次会话期间使用同一个对象.所以这个 ...
- Python练习:九九乘法表
打印 n * n 的乘法表 #打印 9*9 乘法表 def Multiplication(n): # n - 定义打印的行数 max_len = len(str((n)**2)) #计算最大值的占位( ...
- 兄弟俩畅游Tomcat城市的SpringMVC科技园区
Tomcat城市 Tomcat这座城市的历史相当悠久了,经历过几次大的变迁后,呈现出非常明显的地域特征. 从城市往西走,过了城乡结合部以后,可以说是满目疮痍.一片破败,这就是Servlet地区,这座城 ...
- C# - 为引用类型重定义相等性
通常情况下引用类型的相等性是不应该被重定义/重写的. 例如两个引用类型的变量 x 和 y,如果这样写:if(x == y) {...},那么大家都明白,这个比较的是引用的相等性. 但是有少数情况下,也 ...
- Asp.Net Core&Docker部署到树莓派3B中
花了一点时间将吃灰数月的树莓派装上了Docker,并在容器中部署了一个Asp.Net Core应用程序,通过花生壳映射树莓派中的程序,可以使用外网访问树莓派,玩起来很有意思(外网访问地址:http:/ ...
- SpringBoot自动配置原理
前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 回顾前面Spring的文章(以学习的顺序排好): S ...
- Gradle中的闭包
Gradle是基于Groovy的DSL基础上的构建工具,Gradle中的闭包,其原型上实际上即Groovy中闭包.而在表现形式上,其实,Gradle更多的是以约定和基于约定基础上的配置去展现.但本质上 ...
- 系统的讲解 - PHP 缓存技术
目录 概述 浏览器缓存 文件缓存 NoSQL缓存 WEB服务器缓存 Opcode缓存 小结 关于缓存的常见问题 概述 缓存已经成了项目中是必不可少的一部分,它是提高性能最好的方式,例如减少网络I/O. ...