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"?> ...
随机推荐
- YAML基础教程
一.YAML介绍YAML参考了其他多种语言,包括:XML.C语言.Python.Perl以及电子邮件格式RFC2822.Clark Evans在2001年5月在首次发表了这种语言,另外Ingy döt ...
- .NET Core IdentityServer4实战 第二章-OpenID Connect添加用户认证
内容:本文带大家使用IdentityServer4进行使用OpenID Connect添加用户认证 作者:zara(张子浩) 欢迎分享,但需在文章鲜明处留下原文地址. 在这一篇文章中我们希望使用Ope ...
- .NET Core Dapper操作mysql数据库
前言 现在ORM盛行,市面上已经出现了N款不同的ORM套餐了.今天,我们不谈EF,也不聊神马黑马,就说说 Dapper.如何在.NET Core中使用Dapper操作Mysql数据库呢,让我们跟随镜头 ...
- Java进阶篇 设计模式之十四 ----- 总结篇
前言 本篇是讲述之前学习设计模式的一个总结篇,其目的是为了对这些设计模式的进行一个提炼总结,能够通过查看看此篇就可以理解一些设计模式的核心思想. 设计模式简介 什么是设计模式 设计模式是一套被反复使用 ...
- .netcore2.1 使用postgresql数据库,不能实现表的CRUD问题
PostgreSQL对表名.字段名都是区分大小写的.为了兼容其他的数据库程序代码的编写,推荐使用小写加_的方式,例如:swagger_info 我们使用.netcore连接postgresql数据库时 ...
- .netcore2.1使用swagger显示接口说明文档
项目之前开发完接口后,我们还需要写接口说明文档,现在有了swagger方便了很多,可以网页版直接测试,当然了也减少了我们的工作量. 使用swagger生成接口说明文档,大致需要2个步骤 1.从“管理 ...
- 《深入理解Java虚拟机》读书笔记(第三章)
垃圾收集器与内存分配策略(第三章) 前言,众所周知,Java是由c++进化而来,c++在内存需自己申请,自己释放,于是就有了Java的动态内存分配.书的第三章开篇,有这样一句话描述的很妙——Java与 ...
- 简单地做一下“回到顶部”按钮,用jQuery实现其隐藏和显示
1.首先,我们要准备HTML代码: <div id="return-top"> <a href="#top">返回顶部</a> ...
- 怎么让DIV在另一个DIV里靠底部显示?
可以使用css的position属性的绝对定位. 拓展知识 position 属性指定了元素的定位类型. position 属性的五个值: static:HTML元素的默认值,即没有定位,元素出现在正 ...
- ArcGIS API For Javascript_4.8-渲染器Renderer
渲染器:Renderer 类:esri / renderers / Renderer 继承: Renderer->Accessor 子类: ClassBreaksRenderer , Heatm ...