菜单

什么样一步步的用python制作游戏外挂

2019年3月25日 - 皇家赌场系统

那些相比较简单,但是记得那里的操作都以非常尤其快的,有也许游戏还没反应过来吧,你就做到了,于是退步了……
所以供给的时候,请sleep一小会儿。

咱俩本次没用到键盘,所以自身就隐瞒了。

作者们本次没用到键盘,所以笔者就隐瞒了。

4.  精选主窗口上控件地方照旧高宽不难明确的控件。

平等的,大家原材质的职分,“竹席”的职责等等,都能够用那种措施取得。注意得到的都是相持游戏画面左上角的周旋地方。至于抓图的方法,PIL的ImageGrab就很好用,autopy也可以抓图,为何不用,笔者下边就会说到。

25 autopy.mouse.move(L + 315, T + 363)

def get_hash(self, img):
   #使用PIL模块缩放图片,***
  image = img.resize((18, 13), Image.ANTIALIAS).convert("L")
   pixels = list(image.getdata())
  avg = sum(pixels) / len(pixels)
   return "".join(map(lambda p : "1" if p > avg else "0", pixels))

1.  选项主窗口上地点不随窗口大小变化的控件为参照;

工具的预备

6 self.init_recipe()

而是有点不幸的,要是你实在用一下以此命令,然后用autopy.mouse.get_pos()获得一下脚下坐标,发现它并不在(100,100)上,而是更小片段,比如小编的机械上是(97,99),和分辨率有关。这些运动是用户了和windows中mouse_event函数,若不清楚api的,知道那回事就好了,正是以此坐标不是很标准的。像作者同样很感叹的,能够去读一下autopy的源码,作者发现她总结相对坐标算法很是:

1 import autopy
2 autopy.mouse.move(100, 100) # 移动鼠标
3 autopy.mouse.smooth_move(400, 400) # 平滑移动鼠标(上面那个是瞬间的)

买主头上显示图片的岗位是一定的,总共也唯有三个职分,大家得以逐一分析,而原料的职位也是平素的,各个菜的做法更是清楚,那样一来我们一齐能够判断,程序能够很好的帮大家做出一份一份的美味的食物佳肴并奉上,于是钱滚滚的来:)

class Menu:
  def __init__(self):
    self.stuff_pos = []
    self.recipes = [None] * 8
    self.init_stuff()
    self.init_recipe()
  def init_stuff(self):
    for i in range(9):
      self.stuff_pos.append( (L + 102 + (i % 3) * 42, T + 303 + (i / 3) * 42) )
  def init_recipe(self):
    self.recipes[0] = (1, 2)
    self.recipes[1] = (0, 1, 2)
    self.recipes[2] = (5, 1, 2)
    self.recipes[3] = (3, 0, 1, 2)
    self.recipes[4] = (4, 1, 2)
    self.recipes[5] = (7, 1, 2)
    self.recipes[6] = (6, 1, 2)
    self.recipes[7] = (8, 1, 2)
  def click(self, i):
    autopy.mouse.move(self.stuff_pos[i][0] + 20, self.stuff_pos[i][1] + 20)
    autopy.mouse.click()
  def make(self, i):
    for x in self.recipes[i]:
      self.click(x)
    autopy.mouse.move(L + 315, T + 363)
    autopy.mouse.click()

看这么些游乐,有8种菜,每一种菜都有定位的做法,顾客只要坐下来,头顶上就会有一个图形,看图片就精通他想要点什么菜,点击右侧原料区域,然后点击一下……不通晓叫什么,像个竹简一样的东西,菜就做完了,然后把办好的食品拖拽到客户前边就好了。

5 avg = sum(pixels) / len(pixels)

github上有一篇很不错的入门小说,即便是英文不过很简短,不过小编要么摘多少个本次用收获的印证一下,以展现本人很艰苦。

Invalidate(TRUE)的闪屏难点

 (2010-05-03
02:58:24)

图片 1转载▼

标签: 

杂谈

分类: MFC小游戏

    在使用Invalidate(TRUE)开始展览窗口重绘时,总是会遇见闪屏的题材。

    一开始觉得是绘图速度过慢照成的,但在对绘图时间做了2个测试之后察觉,即便全体绘图进程只持续了几个纳秒,照旧会看见很扎眼的闪耀**,所以时间并不是促成闪烁的决定性因素**。

    那毕竟是如何原因吧?现在来看望Invalidate(TRUE)都干了些什么。其实,它只是直接向新闻队列添加了WM_ERASEBKGND和WM_PAINT八个消息。然而,假若利用Invalidate(FALSE)的话,则唯有WM_PAINT音信发出,那时是不会有其余闪耀的。

    今后看来,闪烁如同是由WM_ERASEBKGND消息发生的,事实上,的确与它有关。那WM_ERASEBKGND有干了如何呢?WM_ERASEBKGND消息由OnEraseBkgnd()信息处理函数响应,它的职能就是重绘客户区背景。我们能够通过向工程里添加WM_ERASEBKGND这些音讯,然后在重写的信息处理函数准将再次来到语句修改为return
TRUE
来遮掩这一意义,那样做的益处是此时不会重绘背景了,坏处是此时背景也不会被擦出来。

    好像还尚无说到实在原因,其实真的的来由就带有在中间。今后来做1个试验,分别品尝一下非常快的眨眼和慢速的眨眼,你会发现高速眨眼时我们会觉得眼下的海蓝一闪而过,而慢速眨眼时,则会认为一切经过是接连的,没有啥出格。其实闪烁相当于这么回事,即多张不接二连三图像的飞快切换。那里有七个标准化,多张和快捷和不三番五次,而且需求还要负有才会产生闪烁。假如只是两张,只会觉获得突变,还谈不上闪光;如若效用慢的话,也也正是两张图像的动静了;最终只假若接连图像的话,那就像看摄像,平稳的连结也不会令人认为不适。

    知道了这么些,接下去就能够做定夺了。

    杀鸡取卵方案

    使用Invalidate(FALSE),添加WM_ERASEBKGND音信处理函数大概部分刷新三者选其一,都以足以化解难题的。它们的都以透过除去图像不三番五次这一元向来达成指标的。

 

    别的,要说的是GDI的BitBlt()函数是及其高效的,二次操作所要求的年华唯有几到二十个飞秒,所以大家得以放心的采纳它,而不用担心其余功用难点。但是相对于BitBlt()来说StretchBlt()就要慢的多,大约是几十倍的距离。

    还有正是一般的绘图工作都以先绘制在2个缓冲区上,然后再三次拷贝到显示器上。

    有时,当大家须要采取闪烁的功能的话,也是能够经过多张图像的短平快切换成完结,在此处大家也将两张图像的再次切换精晓为多张图像。

运动鼠标

1 import autopy

规律分析

SetWindowPos():调整控件的地方,该函数使用更灵活,多用于只修改控件地方而高低不变或只修改尺寸而地方不变的情状:

点击鼠标

2 def __init__(self):

万一你看过autopy的api,会发觉它有多少个bitmap包,里面有find_bitmap方法,便是在3个大图像里寻找样品小图像的。聪明的你势必能够想到,大家得以截下整个娱乐画面,然后准备具有的菜的小图像用那一个艺术一找就知晓哪些菜被叫到了。确实,一初始自笔者也有那样做的激动,然则当下就放任了……这几个法子寻找图像,速度先不说,它有个规范是“精确匹配”,图像上有3个像素的逍客GB值差了1,它就查不出来了。大家知晓flash是矢量绘图,它把一个点阵图片呈现在显示屏上是透过了缩放的,那里变数就十分的大,理论上亦然的输入相同的算法得出的结果必然是相同的,不过因为绘图背景等的关联,总会有一小点的异样,正是那一点距离使得那一个美妙的函数不可动用了……

3.  选项与主窗口满足一定坐标关系的控件 ;

github上有一篇很正确的入门小说,尽管是英文不过很简短,但是小编依然摘多少个这一次用收获的求证一下,以展现作者很辛劳。

好了,大家得以用准备好的正经图像,然后预先读取总括特征码存款和储蓄起来,然后再截图与它们相比就好了,距离最小的充足就是相应的菜,代码如下:

移动鼠标

开拓你喜爱的图像编辑器,先河丈量啊~
大家得精晓图像在荧屏的具体地点,能够用标尺量出来,本来直接量也是能够的,但是本人那边运用了镜头左上角的岗位(也正是点1)来作为参考地方,那样只要画面有转移,大家只须要修改2个点坐标就好了,不然每2个点都亟需重新写叁次可不是一件快乐的事务。

4 pixels = list(image.getdata())

活动做菜

2.  采用主窗口上控件的宽大概高稳定的控件;

自作者打开了4399小游戏网,点开了一个不著名的玩耍,唔,做寿司的,有资料在一方面,客人过来后表露他们的渴求,你遵照菜单做好端给她便好~
为何这么有难度?8种菜单记不清,点点就点错,鼠标还倒霉使肌肉劳损啥的伤不起啊……

10 def init_recipe(self):

分析图像

因为那是类的2个主意,所以有个self参数,无视它。那里的img应该传入叁个Image对象,能够使读入图像文件后的结果,也足以是截屏后的结果。而缩放的尺寸(18,13)是自己依照实际情形定的,因为消费者头像上的菜的图像基本就是以此比重。事实注脚这一个比重照旧挺主要的,因为大家的菜有些相似,倘若比例不妥贴压缩后就失真了,简单误判(笔者后面就吃亏了)。

点击鼠标

外挂的历史啥的自身不想说啊,有趣味请谷歌(谷歌)或度娘(注:非技术难题尽能够百度)。

GetWindowRect():获得窗口在显示器上的矩形坐标,调整控件地方时必须首先得到该显示器坐标;

咱俩即将采用和那个一般的法则来判断用户的点餐,当然我们的算法不或者和谷歌那般复杂,腾讯网上有一篇很科学的文章讲述了那么些标题,有趣味的可以看看,作者直接付出达成:

先是要注解,那里的游乐外挂的定义,和那二个大型网游里的外挂可不等,不能够自动打怪,不可能喝药无法躲避林大霉素……
那做这些外挂有什么用?问的好,没用,除了能够浪费你或多或少岁月,进步一下编制程序技术,扩大一丝丝点点点点的做外挂的底蕴以外,毫无用处,倘使您是以创制叁个惊天地泣鬼神不开则已一开立时超神的外挂为对象苏醒的话,也许要让您失望了,请尽早绕道。小编的目标很简短,正是活动玩那款小游戏而已。

貌似图像查找原理

外挂的历史啥的自俺不想说啊,有趣味请谷歌(Google)或度娘(注:非技术难点尽能够百度)。

得到三个图纸的“指纹”后,大家就能够与标准的图纸指纹比较,怎么相比呢,应该使用“汉明距离”,也正是四个字符串对应地方的不等字符的个数。完成也很不难……

键盘操作

autopy介绍

4 autopy.mouse.click() # 单击 5 autopy.mouse.toggle(True) # 按下左键 6
autopy.mouse.toggle(False) # 松开左键

那是本外挂中最没技术含量的二个类了:)请见谅笔者从没写注释和doc,因为都很简短,相信你驾驭。

此处有二个50的开头距离,假设截取图像与其余菜单相比较都高于50,表达怎样?表明现行反革命分外地点的图像不是菜,也正是说顾客还没坐那地方上呢,大概大家把嬉戏最小化了(主任来了),那样处理很关键,免得它轻易找三个最相近但又完全不搭边的菜实行拍卖。

16 self.recipes[5] = (7, 1, 2)

 import autopy
 autopy.mouse.move(100, 100) # 移动鼠标
 autopy.mouse.smooth_move(400, 400) # 平滑移动鼠标(上面那个是瞬间的)

def hamming_dist(self, hash1, hash2):
return sum(itertools.imap(operator.ne, hash1, hash2))
好了,大家得以用准备好的规范图像,然后预先读取总结特征码存款和储蓄起来,然后再截图与它们比较就好了,距离最小的格外正是对应的菜,代码如下:

一般图像查找原理

def hamming_dist(self, hash1, hash2):
return sum(itertools.imap(operator.ne, hash1, hash2))

GetClientRect():得到窗口客户区坐标,左上坐标永远为(0,0);

然而有点不幸的,假诺你其实用一下以此命令,然后用autopy.mouse.get_pos()获得一下脚下坐标,发现它并不在(100,100)上,而是更小部分,比如小编的机械上是(97,99),和分辨率有关。这么些运动是用户了和windows中mouse_event函数,若不清楚api的,知道那回事就好了,正是其一坐标不是很纯粹的。像本人同一很好奇的,能够去读一下autopy的源码,笔者发觉她总计相对坐标算法有题目:

键盘操作

本身打开了4399小游戏网,点开了三个不著名的游玩,唔,做寿司的,有质地在一面,客人过来后披露他们的供给,你遵照菜单做好端给他便好~
为什么这么有难度?8种菜单记不清,点点就点错,鼠标还糟糕使肌肉劳损啥的伤不起啊……

如上多样政策可在骨子里成本中作为参考!不管碰到什么样的情事,一定要领悟:选择1个

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

MFC怎么着获取控件在对话框上的职责坐标

2010-09-13 20:20

本来希望的效果是在对话框上设置两个picture控件,分别显示两幅图像,然后将两幅图像中的相似部分利用一条直线连接起来。要实现这样的效果需要知道相似位置在这两幅图中的坐标以及这两个控件在对话框上的坐标,然后通过加减运算就可以得到图像上的相似区域在对话框的坐标,直接将这两个坐标用直线连接就可以了。                                                                                

为此,如何获得控件在对话框上的坐标是关键问题。编写了如下的测试小程序,目的是将两个picture控件中的点用直线连接起来,比较直观的是picture控件的四个角,所以程序中是将控件的拐角连接起来。首先在对话框上并排放置两个同样大小的picture控件,将他们的标识分别设成IDC_LEFT和IDC_RIGHT,然后添加两个编辑框用于显示picture控件的大小,给这两个编辑框添加相应的数据成员m_row和m_colume。添加一个按钮用于连接picture控件中的点,为这个按钮添加成员函数OnMatch() 。

void CControlDlg::OnMatch() 
{
// TODO: Add your control notification handler code here
CRect rectL,rectR;
GetDlgItem(IDC_LEFT)->GetWindowRect(&rectL);//获取控件相对于屏幕的位置
ScreenToClient(rectL);//转化为对话框上的相对位置
GetDlgItem(IDC_RIGHT)->GetWindowRect(&rectR);//获取控件相对于屏幕的位置
ScreenToClient(rectR);//转化为对话框上的相对位置
m_row=rectL.bottom-rectL.top;
m_colume=rectL.right-rectL.left;
UpdateData(FALSE);

CClientDC dc(this);
dc.MoveTo(rectL.left,rectL.top);
dc.LineTo(rectR.right,rectR.bottom);
dc.MoveTo(rectL.right,rectL.top);
dc.LineTo(rectR.left,rectR.bottom);

dc.MoveTo(rectL.left+m_colume/2,rectL.top+m_row/2);//连接两个控件中心点
dc.LineTo(rectR.left+m_colume/2,rectR.top+m_row/2);

}

MFC中,怎么样获得对话框控件绝对于父窗口(对话框窗口)的岗位

创建者: nottoobad

说到底修改: 二〇〇八-11-29 21:07:54

状态: 公开

标签: mfc 

在MFC中,如何获得对话框控件相对于父窗口(对话框窗口)的地方:

CRect r;

pWnd->GetWindowRect(&r);

那样获得的r是控件相对于显示器的坐标,然后用ScreenToClient(&r)就能够得到控件相对于父窗口的坐标。假如用GetClientRect(&r)的话,r.left和r.top始终是0,获得的并不是实在坐标。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

以用GetSystemMetrics函数能够获得系统一分配辨率,但那只是其功能之一,GetSystemMetrics函数唯有一个参数,称之为「索引」,这一个目录有7一个标识符,通过安装不一致的标识符就能够赢得系统分辨率、窗体突显区域的上升幅度和惊人、滚动条的上升幅度和可观。

为了使使GetSystemMetrics的功用,大家以博得系统一分配辨率为例,并将内部的三个值用TextOut输出到窗体中。

第3步:用GetSystemMetrics获取荧屏的上涨幅度和可观

  1. int x, y;
  2. x =
    GetSystemMetrics(SM_CXSCREEN); //显示屏宽度
  3. y =
    GetSystemMetrics(SM_CYSCREEN); //显示器高度

赢得窗体展现区域大小

已自身未来的询问,获取窗体显示区域大小有二种形式。

率先种办法:使用GetSystemMetrics函数

  1. GetSystemMetrics(SM_CXFULLSCREEN); //获取最大化窗体的呈现区域上涨幅度
  2. GetSystemMetrics(SM_CYFULLSCREEN); //获取最大化窗体的体现区域中度

下面是GetSystemMetrics函数参数nIndex的定义:

 

SM_A福睿斯RANGE 重临是不是准备最小化.
SM_CLEANBOOT 重临系统运营方式:
    0 平常运转
    1 安然无恙方式运行
    2 网络安全格局运维
SM_CMOUSEBUTTONS
重回值为系统帮衬的鼠标键数,重返0,则系统中从未安装鼠标。
SM_CXBORDER,
SM_CYBO路虎极光DE陆风X8重回以相素值为单位的Windows窗口边框的宽度和中度,假设Windows的为3D形态,则
等同于SM_CXEDGE参数
SM_CXCURSOR,
SM_CYCU哈弗SORAV4 重返以相素值为单位的标准光标的小幅度和中度
SM_CXDLGFRAME,
SM_CYDLGFRAME 等同与SM_CXFIXEDFRAME and SM_CYFIXEDFRAME
SM_CXDOUBLECLK,
SM_CYDOUBLECLK 以相素值为单位的双击有效的矩形区域
SM_CXEDGE,SM_CYEDGE 以相素值为单位的3D边框的大幅和可观
SM_CXFIXEDFRAME,
SM_CYFIXEDFRAME
围绕具有标题但不能够转移尺寸的窗口(日常是局地对话框)的边框的厚薄
SM_CXFRAME,SM_CYFRAME 等同于SM_CXSIZEFRAME and SM_CYSIZEFRAME
SM_CXFULLSCREEN,
SM_CYFULLSCREEN 全显示屏窗口的窗口区域的涨幅和惊人
SM_CXHSCROLL,
SM_CYHSCROLL 水平滚动条的可观和品位滚动条上箭头的小幅度
SM_CXHTHUMB 以相素为单位的程度滚动条上的滑动块宽度
SM_CXICON,SM_CYICON 系统缺省的图标的可观和宽窄(一般为32*32)
SM_CXICONSPACING,
SM_CYICONSPACING
以大图标格局查看Item时图标之间的间隔,这一个距离连接凌驾等于
SM_CXICON and SM_CYICON.
SM_CXMAXIMIZED,
SM_CYMAXIMIZED 处于顶层的最大化窗口的缺省尺寸
SM_CXMAXTRACK,
SM_CYMAXTRACK
具有可改变尺寸边框和题目栏的窗口的缺省最大尺寸,若是窗口大于那个
尺寸,窗口是不行移动的。
SM_CXMENUCHECK,
SM_CYMENUCHECK 以相素为单位测算的菜谱选中标记位图的尺寸
SM_CXMENUSIZE,
SM_CYMENUSIZE 以相素总结的菜单栏按钮的尺码
SM_CXMIN,SM_CYMIN 窗口所能达到的小不点儿尺寸
SM_CXMINIMIZED,
SM_CYMINIMIZED 符合规律的最小化窗口的尺码
SM_CXMINTRACK,
SM_CYMINTRACK
最小跟踪距离,当使用者拖动窗口移动距离小于那么些值,窗口不会移动。
SM_CXSCREEN,
SM_CYSCREEN 以相素为单位估测计算的显示器尺寸。
SM_CXSIZE,SM_CYSIZE 以相素总括的标题栏按钮的尺寸
SM_CXSIZEFRAME,
SM_CYSIZEFRAME 围绕可转移大小的窗口的边框的薄厚
SM_CXSMICON,
SM_CYSMICON 以相素计算的小图标的尺寸,小图标相似出将来窗口标题栏上。
M_CXVSCROLL,
SM_CYVSCROLL 以相素总计的垂直滚动条的上升幅度和垂直滚动条上箭头的可观
SM_CYCAPTION 以相素计算的家常窗口题指标中度
SM_CYMENU 以相素总结的单个菜单条的可观
SM_CYSMCAPTION 以相素计算的窗口小标题栏的万丈
SM_CYVTHUMB 以相素总计的垂直滚动条中滚动块的惊人
SM_DBCSENABLED
借使为TRUE或不为0的值证明系统设置了双字节版本的USE卡宴.EXE,为FALSE或0则不是。
SM_DEBUG
借使为TRUE或不为0的值申明系统安装了debug版本的USE普拉多.EXE,为FALSE或0则不是。
SM_MENUDROPALIGNMENT
要是为TRUE或不为0的值下拉菜单是右对齐的不然是左对齐的。
SM_MOUSEPRESENT 假设为TRUE或不为0的值则设置了鼠标,不然没有设置。
SM_MOUSEWHEELPRESENT
要是为TRUE或不为0的值则设置了滚轮鼠标,不然没有设置。(Windows NT only)
SM_SWAPBUTTON 假使为TRUE或不为0的值则鼠标左右键交流,不然没有。

相信你一定用过Google的“按图搜图”功用,假如没有,你就落伍啦,快去试试!当你输入一张图片时,它会把与那张图相似的图像都给您展现出来,所以当你找到一张乐意的图想做壁纸又觉得太小的时候,基本能够用这几个方法找到适当的~

怎么办?分析顾客头上的图像就能够,来,从获得图像起头吧~

那个难题相当粗略,大家只供给把菜单的原材质记录在案,然后点击相应地点便可,作者把它写成了三个类来调用:

本条命令会让鼠标快捷移动到内定荧屏坐标,你掌握怎么是显示器坐标的呢,左上角是(0,0),然后向右向下递增,所以1024×768荧屏的右下角坐标是……你猜对了,是(1023,767)。

11 self.recipes[0] = (1, 2)

本条相比较容易,不过记得那里的操作都以老大相当慢的,有只怕游戏还没影响过来呢,你就完事了,于是战败了……
所以要求的时候,请sleep一小会儿。

好吧,无法用也是好事,不然小编怎么引出大家高明的图像分析算法呢?

挪动鼠标

point.x = point.x * 0xffff / GetSystemMetrics(SM_CXSCREEN);

一经您需求一个可观的求学交换条件,那么你能够设想Python学习调换群:548377875;
就算您供给一份系统的读书资料,那么你能够设想Python学习交换群:548377875。

8 continue 9 this_dist = self.hamming_dist(hash1, hash2)

其一命令会让鼠标连忙移动到钦赐荧屏坐标,你明白如何是荧屏坐标的啊,左上角是(0,0),然后向右向下递增,所以1024×768显示屏的右下角坐标是……你猜对了,是(1023,767)。

MoveWindow():调整控件到钦命地点;

本条标题非常粗大略,大家只须求把菜单的原材质记录在案,然后点击相应岗位便可,笔者把它写成了贰个类来调用:

编辑器

autopy图像局限

控件地方调整涉及的参变量有:主窗口的cx、cy坐标、参考试场点坐标。相对于调整岗位时调用的函数,变量稍许复杂些。cx、cy坐标为主窗口的宽和高,有OnSize的参数给出,为窗口控件调整提供了转移的限定,全数的控件为了能够健康突显都不能够压倒那几个限制。其实在支付进度中较难和重要的是参考控件的精选,其义务相对于主窗口的话必须好明确。常用的方针:

point.x = point.x * 0xffff / GetSystemMetrics(SM_CXSCREEN);
就会准多了,即使理论上会慢一丝丝,可是小编也懒得改代码重新编写翻译了,差多少个像素,这里对大家影响十分的小~咱要吸取教训呀。

23 for x in self.recipes[i]:

收获多少个图纸的“指纹”后,大家就可以与专业的图片指纹比较,怎么相比较呢,应该采用“汉明距离”,约等于五个字符串对应地点的分裂字符的个数。达成也很简单……

在mfc工程中央控制件只怕窗口岗位的调动是常事蒙受的,尤其是依照对话框的工程。地方的调整蕴含坐标、长度和幅度的成形,一般在窗口类的OnSize函数中贯彻。控件地点的调整涉及的函数有:GetWindowRect()、ScreenToClient()、GetClientRect()、MoveWindow()或SetWindowPos(),效能意义如下:

1 #引入autopy模块
2 # ***
3 import autopy
4 autopy.mouse.click() # 单击
5 autopy.mouse.toggle(True) # 按下左键
6 autopy.mouse.toggle(False) # 松开左键

8 for i in range(9):

深信您早晚用过谷歌(Google)的“按图搜图”功能,假诺没有,你就落伍啦,快去试试!当你输入一张图片时,它会把与那张图相似的图像都给您表现出来,所以当你找到一张满足的图想做壁纸又认为太小的时候,基本得以用这一个艺术找到合适的~

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图