手机上了可以手机制作动画片的软件的表白软件

posts - 286,&
comments - 132,&
trackbacks - 0
体验效果:
推荐:HTML代码如下:
&!DOCTYPE html&
&html xmlns="http://www.w3.org/1999/xhtml"&&head&&meta charset="UTF-8" &
&title&程序员用HTML5制作的爱心树表白动画- 柯乐义&/title&&base target="_blank" href="http://keleyi.com/keleyi/phtml/html5/" /&
&link type="text/css" rel="stylesheet" href="http://keleyi.com/keleyi/phtml/html5/31/renxi/default.css"&
&script type="text/javascript" src="http://keleyi.com/keleyi/pmedia/jquery/jquery-1.11.2.min.js"&&/script&
&script type="text/javascript" src="http://keleyi.com/keleyi/phtml/html5/31/renxi/jscex.min.js"&&/script&
&script type="text/javascript" src="http://keleyi.com/keleyi/phtml/html5/31/renxi/jscex-parser.js"&&/script&
&script type="text/javascript" src="http://keleyi.com/keleyi/phtml/html5/31/renxi/jscex-jit.js"&&/script&
&script type="text/javascript" src="http://keleyi.com/keleyi/phtml/html5/31/renxi/jscex-builderbase.min.js"&&/script&
&script type="text/javascript" src="http://keleyi.com/keleyi/phtml/html5/31/renxi/jscex-async.min.js"&&/script&
&script type="text/javascript" src="http://keleyi.com/keleyi/phtml/html5/31/renxi/jscex-async-powerpack.min.js"&&/script&
&script type="text/javascript" src="http://keleyi.com/keleyi/phtml/html5/31/renxi/functions.js" charset="utf-8"&&/script&
&script type="text/javascript" src="http://keleyi.com/keleyi/phtml/html5/31/renxi/love.js" charset="utf-8"&&/script&
&style type="text/css"&
.STYLE1 {color: #666666}
&div id="main"&
&div id="error"&本页面采用HTML5技术,目前您的浏览器无法显示,请使用&a href="http://keleyi.com/a/bjac/g039tue3.htm"&支持HTML5的浏览器&/a&查看本页。&/div&
&div id="wrap"&
&div id="text"&
&div id="code"&
&p& &font color="#FF0000"& &span class="say"&亲爱的何文琪:&/span&&br&
&span class="say"&&/span&&br /&
&span class="say"&曾经,&/span&&br&
&span class="say"&有一份真挚的爱情摆在我面前,&/span&&br /&
&span class="say"&我没有珍惜,&/span&&br /&
&span class="say"&等到我失去的时候才后悔莫及,&/span&&br&
&span class="say"&人世间最痛苦的事莫过于此......&/span&&br&
&span class="say"&如果上天能够给我一个再来一次的机会,&/span&&br&
&span class="say"&我会对那个女孩子说六个字:&/span&&br&
&span class="say"&何文琪我爱你!&/span&&br /&
&span class="say"&如果非要在这份爱上加一个期限,&/span&&br&
&span class="say"&我希望是..... &/span&&br&
&span class="say"&一万年!&/span&&br /&
&span class="say"&&span class="space"&&/span& -- 爱你的柯乐义--&/span&
&/font&&/p&
&div id="clock-box"&
&script type="text/javascript" src="/kineryi/js/gggg336x280a.js"&&/script&
&canvas id="keleyi" width="1100" height="680"&&/canvas&
(function(){
var canvas = $('#ke'+'leyi');
if (!canvas[0].getContext) {
$("#error").show();
return false; }
var width = canvas.width();
var height = canvas.height();
canvas.attr("width", width);
canvas.attr("height", height);
var opts = {
x: width / 2 - 20,
color: "rgb(190, 26, 37)",
[535, 680, 570, 250, 500, 200, 30, 100, [
[540, 500, 455, 417, 340, 400, 13, 100, [
[450, 435, 434, 430, 394, 395, 2, 40]
[550, 445, 600, 356, 680, 345, 12, 100, [
[578, 400, 648, 409, 661, 426, 3, 80]
[539, 281, 537, 248, 534, 217, 3, 40],
[546, 397, 413, 247, 328, 244, 9, 80, [
[427, 286, 383, 253, 371, 205, 2, 40],
[498, 345, 435, 315, 395, 330, 4, 60]
[546, 357, 608, 252, 678, 221, 6, 100, [
[590, 293, 646, 277, 648, 271, 2, 80]
width: 1080,
height: 650,
width: 1200,
height: 5,
speed: 10,
var tree = new Tree(canvas[0], width, height, opts);
var seed = tree.
var foot = tree.
var hold = 1;
canvas.click(function(e) {
var offset = canvas.offset(), x,
x = e.pageX - offset.
y = e.pageY - offset.
if (seed.hover(x, y)) {
canvas.unbind("click");
canvas.unbind("mousemove");
canvas.removeClass('hand');
}).mousemove(function(e){
var offset = canvas.offset(), x,
x = e.pageX - offset.
y = e.pageY - offset.
canvas.toggleClass('hand', seed.hover(x, y));
var seedAnimate = eval(Jscex.compile("async", function () {
seed.draw();
while (hold) {
$await(Jscex.Async.sleep(10));
while (seed.canScale()) {
seed.scale(0.95);
$await(Jscex.Async.sleep(10));
while (seed.canMove()) {
seed.move(0, 2);
foot.draw();
$await(Jscex.Async.sleep(10));
var growAnimate = eval(Jscex.compile("async", function () {
tree.grow();
$await(Jscex.Async.sleep(10));
} while (tree.canGrow());
var flowAnimate = eval(Jscex.compile("async", function () {
tree.flower(2);
$await(Jscex.Async.sleep(10));
} while (tree.canFlower());
var moveAnimate = eval(Jscex.compile("async", function () {
tree.snapshot("p1", 240, 0, 610, 680);
while (tree.move("p1", 500, 0)) {
foot.draw();
$await(Jscex.Async.sleep(10));
foot.draw();
tree.snapshot("p2", 500, 0, 610, 680);
// 会有闪烁不得意这样做, (>﹏<)
canvas.parent().css("background", "url(" + tree.toDataURL('image/png') + ")");
canvas.css("background", "#ffe");
$await(Jscex.Async.sleep(300));
canvas.css("background", "none");
var jumpAnimate = eval(Jscex.compile("async", function () {
var ctx = tree.
while (true) {
tree.ctx.clearRect(0, 0, width, height);
tree.jump();
foot.draw();
$await(Jscex.Async.sleep(25));
var textAnimate = eval(Jscex.compile("async", function () {
$("#code").show().typewriter();
var runAsync = eval(Jscex.compile("async", function () {
$await(seedAnimate());
$await(growAnimate());
$await(flowAnimate());
$await(moveAnimate());
textAnimate().start();
$await(jumpAnimate());
runAsync().start();
&div style="text-align:margin:50px 0; font:normal 14px/24px 'MicroSoft YaHei';"&
&p&适用浏览器:360、FireFox、Chrome、Safari、Opera、傲游、搜狗、世界之窗. 不支持IE8及以下浏览器。&/p&
&p&&a href="http://keleyi.com" target="_blank"&首页&/a& &a href="http://keleyi.com/keleyi/phtml/"&特效&/a& &a&href="http://keleyi.com/a/bjae/9dbvc2eg.htm"&原文&/a&&/p&
web前端资源:
表白的文字可以自己修改
阅读(...) 评论()&nbsp>&nbsp
&nbsp>&nbsp
&nbsp>&nbsp
打造浪漫的Android表白程序
摘要:转自我的CSDN:http://blog.csdn.net/huachao1001/article/details/几年前,看到过有个牛人用HTML5绘制了浪漫的爱心表白动画。地址在这:浪漫程序员HTML5爱心表白动画。发现原来程序员也是可以很浪......漫.....的(PS:刚过520,被妹子骂不够浪漫)。那么在Android怎么打造如此这个效果呢?参考了一下前面HTML5的算法,在Android中实现了类似的效果。先贴上最终效果图:最终效果GIF截图生成
转自我的CSDN:http://blog.csdn.net/huachao1001/article/details/几年前,看到过有个牛人用HTML5绘制了浪漫的爱心表白动画。地址在这:浪漫程序员 HTML5爱心表白动画。发现原来程序员也是可以很浪......漫.....的(PS:刚过520,被妹子骂不够浪漫)。那么在Android怎么打造如此这个效果呢?参考了一下前面HTML5的算法,在Android中实现了类似的效果。先贴上最终效果图:
生成心形线
心形线的表达式可以参考:桃心线。里面对桃心线的表达式解析的挺好。可以通过使用极坐标的方式,传入角度和距离(常量)计算出对应的坐标点。其中距离是常量值,不需改变,变化的是角度。桃心线极坐标方程式为:
如果生成的桃心线不够大,可以吧x、y乘以一个常数,使之变大。考虑到大部分人都不愿去研究具体的数学问题,我们直接把前面HTML5的JS代码直接翻译成Java代码就好。代码如下:
public Point getHeartPoint(float angle) {
float t = (float) (angle / Math.PI);
float x = (float) (19.5 * (16 * Math.pow(Math.sin(t), 3)));
float y = (float) (-20 * (13 * Math.cos(t) - 5 * Math.cos(2 * t) - 2 * Math.cos(3 * t) - Math.cos(4 * t)));
return new Point(offsetX + (int) x, offsetY + (int) y);
其中offsetX和offsetY是偏移量。使用偏移量主要是为了能让心形线处于中央。offsetX和offsetY的值分别为:
offsetX = width / 2;
offsetY = height / 2 - 55;
通过这个函数,我们可以将角度从(0,180)变化,不断取点并画点将这个心形线显示出来。好了,我们自定义一个View,然后把这个心形线画出来吧!
protected void onDraw(Canvas canvas) {
float angle = 10;
while (angle & 180) {
Point p = getHeartPoint(angle);
canvas.drawPoint(p.x, p.y, paint);
angle = angle + 0.02f;
运行结果如下:
显示的心形线
绘制花瓣原理
我们想要的并不是简单绘制一个桃心线,要的是将花朵在桃心线上摆放。首先,得要知道怎么绘制花朵,而花朵是由一个个花瓣组成。因此绘制花朵的核心是绘制花瓣。绘制花瓣的原理是:3次贝塞尔曲线。三次贝塞尔曲线是由两个端点和两个控制点决定。假设花芯是一个圆,有n个花瓣,那么两个端点与花芯的圆心连线之间的夹角即为360/n。因此可以根据花瓣数量和花芯半径确定每个花瓣的位置。将两个端点与花芯的圆心连线的延长线分别确定另外两个控制点。通过随机生成花芯半径、每个花瓣的起始角以及随机确定延长线得到两个控制点,可以绘制一个随机的花朵。参数的改变如下图所示:
将花朵绘制到桃心线上
一大波代码来袭
首先定义花瓣类Petal:
package com.hc.
import android.graphics.C
import android.graphics.P
import android.graphics.P
* Package com.example.administrator.testrecyclerview
* Created by HuaChao on .
public class Petal {
private float stretchA;//第一个控制点延长线倍数
private float stretchB;//第二个控制点延长线倍数
private float startA//起始旋转角,用于确定第一个端点
//两条线之间夹角,由起始旋转角和夹角可以确定第二个端点
private int radius = 2;//花芯的半径
private float growF//增长因子,花瓣是有开放的动画效果,这个参数决定花瓣展开速度
//花瓣颜色
private boolean isFinished =//花瓣是否绽放完成
private Path path = new Path();//用于保存三次贝塞尔曲线
private Paint paint = new Paint();//画笔
//构造函数,由花朵类调用
public Petal(float stretchA, float stretchB, float startAngle, float angle, int color, float growFactor) {
this.stretchA = stretchA;
this.stretchB = stretchB;
this.startAngle = startA
this.angle =
this.color =
this.growFactor = growF
paint.setColor(color);
//用于渲染花瓣,通过不断更改半径使得花瓣越来越大
public void render(Point p, int radius, Canvas canvas) {
if (this.radius &= radius) {
this.radius += growF // / 10;
isFinished =
this.draw(p, canvas);
//绘制花瓣,参数p是花芯的圆心的坐标
private void draw(Point p, Canvas canvas) {
if (!isFinished) {
path = new Path();
//将向量(0,radius)旋转起始角度,第一个控制点根据这个旋转后的向量计算
Point t = new Point(0, this.radius).rotate(MyUtil.degrad(this.startAngle));
//第一个端点,为了保证圆心不会随着radius增大而变大这里固定为3
Point v1 = new Point(0, 3).rotate(MyUtil.degrad(this.startAngle));
//第二个端点
Point v2 = t.clone().rotate(MyUtil.degrad(this.angle));
//延长线,分别确定两个控制点
Point v3 = t.clone().mult(this.stretchA);
Point v4 = v2.clone().mult(this.stretchB);
//由于圆心在p点,因此,每个点要加圆心坐标点
v1.add(p);
v2.add(p);
v3.add(p);
v4.add(p);
path.moveTo(v1.x, v1.y);
//参数分别是:第一个控制点,第二个控制点,终点
path.cubicTo(v3.x, v3.y, v4.x, v4.y, v2.x, v2.y);
canvas.drawPath(path, paint);
花瓣类是最重要的类,因为真正绘制在屏幕上的是一个个小花瓣。每个花朵包含一系列花瓣,花朵类Bloom如下:
package com.hc.
import android.graphics.C
import java.util.ArrayL
* Package com.example.administrator.testrecyclerview
* Created by HuaChao on .
public class Bloom {
//整个花朵的颜色
private P//花芯圆心
//花芯半径
private ArrayList&Petal&//用于保存花瓣
public Point getPoint() {
public Bloom(Point point, int radius, int color, int petalCount) {
this.point =
this.radius =
this.color =
petals = new ArrayList&&(petalCount);
float angle = 360f / petalC
int startAngle = MyUtil.randomInt(0, 90);
for (int i = 0; i & petalC i++) {
//随机产生第一个控制点的拉伸倍数
float stretchA = MyUtil.random(Garden.Options.minPetalStretch, Garden.Options.maxPetalStretch);
//随机产生第二个控制地的拉伸倍数
float stretchB = MyUtil.random(Garden.Options.minPetalStretch, Garden.Options.maxPetalStretch);
//计算每个花瓣的起始角度
int beginAngle = startAngle + (int) (i * angle);
//随机产生每个花瓣的增长因子(即绽放速度)
float growFactor = MyUtil.random(Garden.Options.minGrowFactor, Garden.Options.maxGrowFactor);
//创建一个花瓣,并添加到花瓣列表中
this.petals.add(new Petal(stretchA, stretchB, beginAngle, angle, color, growFactor));
//绘制花朵
public void draw(Canvas canvas) {
for (int i = 0; i & this.petals.size(); i++) {
p = petals.get(i);
//渲染每朵花朵
p.render(point, this.radius, canvas);
public int getColor() {
接下来是花园类Garden,主要用于创建花朵以及一些相关配置:
package com.hc.
import java.util.ArrayL
* Package com.example.administrator.testrecyclerview
* Created by HuaChao on .
public class Garden {
//创建一个随机的花朵
public Bloom createRandomBloom(int x, int y) {
//创建一个随机的花朵半径
int radius = MyUtil.randomInt(Options.minBloomRadius, Options.maxBloomRadius);
//创建一个随机的花朵颜色
int color = MyUtil.randomrgba(Options.minRedColor, Options.maxRedColor, Options.minGreenColor, Options.maxGreenColor, Options.minBlueColor, Options.maxBlueColor, Options.opacity);
//创建随机的花朵中花瓣个数
int petalCount = MyUtil.randomInt(Options.minPetalCount, Options.maxPetalCount);
return createBloom(x, y, radius, color, petalCount);
//创建花朵
public Bloom createBloom(int x, int y, int radius, int color, int petalCount) {
return new Bloom(new Point(x, y), radius, color, petalCount);
static class Options {
//用于控制产生随机花瓣个数范围
public static int minPetalCount = 8;
public static int maxPetalCount = 15;
//用于控制产生延长线倍数范围
public static float minPetalStretch = 2f;
public static float maxPetalStretch = 3.5f;
//用于控制产生随机增长因子范围,增长因子决定花瓣绽放速度
public static float minGrowFactor = 1f;
public static float maxGrowFactor = 1.1f;
//用于控制产生花朵半径随机数范围
public static int minBloomRadius = 8;
public static int maxBloomRadius = 10;
//用于产生随机颜色
public static int minRedColor = 128;
public static int maxRedColor = 255;
public static int minGreenColor = 0;
public static int maxGreenColor = 128;
public static int minBlueColor = 0;
public static int maxBlueColor = 128;
//花瓣的透明度
public static int opacity = 50;//0.1
考虑到刷新的比较频繁,选择使用SurfaceView作为显示视图。自定义一个HeartView继承SurfaceView。代码如下:
package com.hc.
import android.content.C
import android.graphics.B
import android.graphics.C
import android.graphics.C
import android.graphics.P
import android.util.AttributeS
import android.view.SurfaceH
import android.view.SurfaceV
import java.util.ArrayL
* Package com.hc.testheart
* Created by HuaChao on .
public class HeartView extends SurfaceView implements SurfaceHolder.Callback {
SurfaceHolder surfaceH
int offsetX;
int offsetY;
private Paint backgroundP
private boolean isDrawing =
private int heartRadio = 1;
public HeartView(Context context) {
super(context);
public HeartView(Context context, AttributeSet attrs) {
super(context, attrs);
private void init() {
surfaceHolder = getHolder();
surfaceHolder.addCallback(this);
garden = new Garden();
backgroundPaint = new Paint();
backgroundPaint.setColor(Color.rgb(0xff, 0xff, 0xe0));
ArrayList&Bloom& blooms = new ArrayList&&();
public Point getHeartPoint(float angle) {
float t = (float) (angle / Math.PI);
float x = (float) (heartRadio * (16 * Math.pow(Math.sin(t), 3)));
float y = (float) (-heartRadio * (13 * Math.cos(t) - 5 * Math.cos(2 * t) - 2 * Math.cos(3 * t) - Math.cos(4 * t)));
return new Point(offsetX + (int) x, offsetY + (int) y);
//绘制列表里所有的花朵
private void drawHeart() {
canvas.drawRect(0, 0, width, height, backgroundPaint);
for (Bloom b : blooms) {
b.draw(canvas);
Canvas c = surfaceHolder.lockCanvas();
c.drawBitmap(bm, 0, 0, null);
surfaceHolder.unlockCanvasAndPost(c);
public void reDraw() {
blooms.clear();
drawOnNewThread();
public void draw(Canvas canvas) {
super.draw(canvas);
//开启一个新线程绘制
private void drawOnNewThread() {
new Thread() {
public void run() {
if (isDrawing)
isDrawing =
float angle = 10;
while (true) {
Bloom bloom = getBloom(angle);
if (bloom != null) {
blooms.add(bloom);
if (angle &= 30) {
angle += 0.2;
drawHeart();
sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
isDrawing =
}.start();
private Bloom getBloom(float angle) {
Point p = getHeartPoint(angle);
boolean draw =
/**循环比较新的坐标位置是否可以创建花朵,
* 为了防止花朵太密集
for (int i = 0; i & blooms.size(); i++) {
Bloom b = blooms.get(i);
Point bp = b.getPoint();
float distance = (float) Math.sqrt(Math.pow(p.x - bp.x, 2) + Math.pow(p.y - bp.y, 2));
if (distance & Garden.Options.maxBloomRadius * 1.5) {
//如果位置间距满足要求,就在该位置创建花朵并将花朵放入列表
if (draw) {
Bloom bloom = garden.createRandomBloom(p.x, p.y);
public void surfaceCreated(SurfaceHolder holder) {
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
this.width =
this.height =
//我的手机宽度像素是1080,发现参数设置为30比较合适,这里根据不同的宽度动态调整参数
heartRadio = width * 30 / 1080;
offsetX = width / 2;
offsetY = height / 2 - 55;
bm = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
canvas = new Canvas(bm);
drawOnNewThread();
public void surfaceDestroyed(SurfaceHolder holder) {
还有两个比较重要的工具类Point.java保存点信息,或者说是向量信息。包含向量的基本运算。
package com.hc.
* Package com.hc.testheart
* Created by HuaChao on .
public class Point {
public Point(int x, int y) {
public Point rotate(float theta) {
int x = this.x;
int y = this.y;
this.x = (int) (Math.cos(theta) * x - Math.sin(theta) * y);
this.y = (int) (Math.sin(theta) * x + Math.cos(theta) * y);
//乘以一个常数
public Point mult(float f) {
public Point clone() {
return new Point(this.x, this.y);
//该点与圆心距离
public float length() {
return (float) Math.sqrt(this.x * this.x + this.y * this.y);
//向量相减
public Point subtract(Point p) {
this.x -= p.x;
this.y -= p.y;
//向量相加
public Point add(Point p) {
this.x += p.x;
this.y += p.y;
public Point set(int x, int y) {
工具类MyUtil.java主要是产生随机数、颜色等
package com.hc.
import android.graphics.C
* Package com.example.administrator.testrecyclerview
* Created by HuaChao on .
public class MyUtil {
public static float circle = (float) (2 * Math.PI);
public static int rgba(int r, int g, int b, int a) {
return Color.argb(a, r, g, b);
public static int randomInt(int min, int max) {
return (int) Math.floor(Math.random() * (max - min + 1)) +
public static float random(float min, float max) {
return (float) (Math.random() * (max - min) + min);
//产生随机的argb颜色
public static int randomrgba(int rmin, int rmax, int gmin, int gmax, int bmin, int bmax, int a) {
int r = Math.round(random(rmin, rmax));
int g = Math.round(random(gmin, gmax));
int b = Math.round(random(bmin, bmax));
int limit = 5;
if (Math.abs(r - g) &= limit &;&; Math.abs(g - b) &= limit &;&; Math.abs(b - r) &= limit) {
return rgba(rmin, rmax, gmin, gmax);
return rgba(r, g, b, a);
//角度转弧度
public static float degrad(float angle) {
return circle / 360 *
好了,目前为止,就可以得到上面的效果了。
以上是的内容,更多
的内容,请您使用右上方搜索功能获取相关信息。
若你要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内给你回复。
云服务器 ECS
可弹性伸缩、安全稳定、简单易用
&40.8元/月起
预测未发生的攻击
&24元/月起
为您提供0门槛上云实践机会
你可能还喜欢
你可能感兴趣
阿里云教程中心为您免费提供
打造浪漫的Android表白程序相关信息,包括
的信息,所有打造浪漫的Android表白程序相关内容均不代表阿里云的意见!投稿删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内答复
售前咨询热线
支持与服务
资源和社区
关注阿里云
International扫一扫,随时随地挑选人才和公司
无线工作台,管理更高效更自由
微信公众号
随时掌握一手资讯
需求发布后1小时内收到服务商响应每个需求平均有10个服务商参与95%以上的需求得到了圆满解决所有需求不向雇主收取任何佣金
做一个用于告白的flash动画,2分钟时长左右,有具体文案
做一个用于告白的flash动画,2分钟时长左右,有具体文案
雇主预算:¥400.00
已收到 2 个服务商的文案稿件
, 最终中标并完成需求
有相似问题想解决?专业顾问来帮助您
通过猪八戒网实名认证,保证身份真实可靠
完成手机认证,保证能随时联系到服务商
该需求下的优秀交稿
TA的交稿:
本人专业制作各种类型的二维flash动画.我网址http://faik.svfree.netQQ:
...
TA的交稿:
田小七动画工作室竭诚与您合作qq,留个qq方便沟通
交易成功的需求
FLASH动画相关需求博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)520超炫浪漫表白树动态图片生成器下载_乐游网安卓下载
安全的单机游戏下载大全
→ 520超炫浪漫表白树动态图片生成器
《520超炫浪漫表白树动态图片生成器》游戏截图
《520超炫浪漫表白树动态图片生成器》是一款为小伙伴们打造的浪漫表白神器,只需要输入表白的话语即可制作一个浪漫的表白树二维码,当对方扫描二维码后就可以看到一个慢慢长大的爱心树,旁边就是你写的表白话语。【软件介绍】你仰慕已久的女神,是否该向她表白了呢?520超炫浪漫表白树生成器可以制作生成2款表白网页,一款原版,一款3D幻灯片版,各具特色。软件几乎所有内容都可以自定义,包括网页标题,无水印、无bug,支持保存网页源码,直接发送给你的女神!【使用方法】1、点击小编为大家提供的链接;2、输入表白话语并署名;3、点击确定生成。【软件评测】一款非常好用的表白神器,在5.20这一天你可以利用本款软件像自己的女神、男神表白,也许就成功了呢。
点击查看更多
微信朋友圈装逼生成器大全
微信朋友圈装逼生成器在朋友圈中相当火爆,款式多种多样,有男神女神表白微博截图生成器,有房产证、豪车配单生成器,朋友圈点赞生成器,余额宝巨款余额、微信钱包巨款零钱生成器等等,所有的都任君挑选,有了各种装
特别说明:
【官方下载地址】
修图相信大家已经不陌生了吧,本是工作用软件,现在已经常用化了,可以用来让照片更加美丽,去掉瑕疵,这里
同类排行榜

我要回帖

更多关于 手机制作3d动画的软件 的文章

 

随机推荐