rect

Flutter Widgets 之 ShaderMask

老子叫甜甜 提交于 2020-02-29 22:40:48
ShaderMask可以让我们将Shader用于任何一个控件上,比如在Text上使用渐变就可以使用ShaderMask来实现: ShaderMask( shaderCallback: (Rect bounds) { return RadialGradient( center: Alignment.topLeft, radius: 1.0, colors: <Color>[Colors.yellow, Colors.deepOrange], tileMode: TileMode.mirror, ).createShader(bounds); }, blendMode: BlendMode.srcATop, child: Text('老孟,一枚有态度的程序员',style: TextStyle(fontSize: 30),), ) 效果: shaderCallback 需要返回一个Shader对象,可以通过渐变相关类直接生成Shader: RadialGradient(...).createShader(rect) blendMode 属性是融合方式,child是目标图像(dst),Shader是源图像(src),融合方式介绍: 英文官方介绍 中文 不错的翻译 更多相关阅读: Flutter系列文章总览 Flutter Widgets 之 Expanded和Flexible

Flutter Widgets 之 ShaderMask

自闭症网瘾萝莉.ら 提交于 2020-02-29 22:40:36
ShaderMask可以让我们将Shader用于任何一个控件上,比如在Text上使用渐变就可以使用ShaderMask来实现: ShaderMask( shaderCallback: (Rect bounds) { return RadialGradient( center: Alignment.topLeft, radius: 1.0, colors: <Color>[Colors.yellow, Colors.deepOrange], tileMode: TileMode.mirror, ).createShader(bounds); }, blendMode: BlendMode.srcATop, child: Text('老孟,一枚有态度的程序员',style: TextStyle(fontSize: 30),), ) 效果: shaderCallback 需要返回一个Shader对象,可以通过渐变相关类直接生成Shader: RadialGradient(...).createShader(rect) blendMode 属性是融合方式,child是目标图像(dst),Shader是源图像(src),融合方式介绍: 英文官方介绍 中文 不错的翻译 更多相关阅读: Flutter系列文章总览 Flutter Widgets 之 Expanded和Flexible

python入门教程:实现打砖块小游戏代码实例

僤鯓⒐⒋嵵緔 提交于 2020-02-29 00:12:33
这篇文章主要介绍了Python打砖块小游戏,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 这次用Python实现的是一个接球打砖块的小游戏,需要导入pygame模块,有以下两条经验总结: 1.多父类的继承2.碰撞检测的数学模型 知识点稍后再说,我们先看看游戏的效果和实现: 一、游戏效果 二、游戏代码 #导入模块 import pygame from pygame.locals import * import sys,random,time,math class GameWindow(object): '''创建游戏窗口类''' def __init__(self,*args,**kw): self.window_length = 600 self.window_wide = 500 #绘制游戏窗口,设置窗口尺寸 self.game_window = pygame.display.set_mode((self.window_length,self.window_wide)) #设置游戏窗口标题 pygame.display.set_caption("CatchBallGame") #定义游戏窗口背景颜色参数 self.window_color = (135,206,250) def backgroud(self)

OpenCV图像处理篇之腐蚀与膨胀

孤者浪人 提交于 2020-02-28 18:34:54
转载请注明出处: http://xiahouzuoxin.github.io/notes 腐蚀与膨胀 腐蚀和膨胀是图像的形态学处理中最主要的操作,之后遇见的开操作和闭操作都是腐蚀和膨胀操作的结合运算。 腐蚀和膨胀的应用非常广泛,并且效果还非常好: 腐蚀能够切割(isolate)独立的图像元素,膨胀用于连接(join)相邻的元素,这也是腐蚀和膨胀后图像最直观的展现 去噪:通过低尺寸结构元素的腐蚀操作非常easy去掉分散的椒盐噪声点 图像轮廓提取:腐蚀操作 图像切割 等等...(在文后给出一则简单有用膨胀操作提取车牌数字区域的样例) 结构元素 是形态学操作中最重要的概念, 如上图,B为结构元素。 腐蚀操作描写叙述为:扫描图像的每个像素,用结构元素与其覆盖的二值图像做“与”操作:假设都为1,结果图像的该像素为1,否则为0。 膨胀操作描写叙述为:扫描图像的每个像素,用结构元素与其覆盖的二值图像做“与”操作:假设都为0,结果图像的该像素为0,否则为1。 以上都是关于二值图像的形态学操作,对于灰度图像: 腐蚀操作 当中。g(x,y)为腐蚀后的灰度图像,f(x,y)为原灰度图像。B为结构元素。 腐蚀运算是由结构元素确定的邻域块中选取图像值与结构元素值的差的最小值。 膨胀操作 当中,g(x,y)为腐蚀后的灰度图像,f(x,y)为原灰度图像,B为结构元素。

iOS 画气泡(bubble)

匆匆过客 提交于 2020-02-27 09:55:39
本文是关于iOS代码画气泡,手把手教你画一个气泡,其他形状请读者自行尝试,希望大家玩的开心! // // SpeechBubbleView.m // demo // // Created by mygame on 15/3/4. // Copyright (c) 2015年 mygame. All rights reserved. // #import "SpeechBubbleView.h" #import <CoreGraphics/CoreGraphics.h> #define kPopupTriangleHeigh 12 #define kPopupTriangleWidth 22 #define kBorderOffset 0//0.5f @implementation SpeechBubbleView - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.backgroundColor = [UIColor purpleColor]; } return self; } - (void)drawRect:(CGRect)rect { [super drawRect:rect]; CGFloat viewW = rect.size

python项目分享-飞机大战

霸气de小男生 提交于 2020-02-26 02:14:20
python项目分享-飞机大战 最近学了一阵python写了个较为低级的游戏,来分享一下源码。大家相互学习: plane_main.py import pygame import ceshi from plane_sprit import * pygame . init ( ) pygame . mixer . music . load ( "背景 音乐2.mp3" ) pygame . mixer . music . play ( ) class planegame ( object ) : def __init__ ( self ) : self . sceen = pygame . display . set_mode ( SCREEN_RECT . size ) self . clock = pygame . time . Clock ( ) self . __creatsprit ( ) pygame . time . set_timer ( ENNY_PLANE , 1000 ) pygame . time . set_timer ( HEARO_FIR , 500 ) pygame . time . set_timer ( ENNY_PLANE2 , 1500 ) def __creatsprit ( self ) : bg1 = background ( ".

Python 实现 字符雨

爱⌒轻易说出口 提交于 2020-02-26 01:25:14
本教程很简单吧,除了复制代码之外,希望你也抽点时间去看下“注意”,教程很简单 注意 本项目中,需要用到文件库“pygame”,不会的小伙伴,可以参考我的PyCharm教程里面有详细的讲解 代理/IB 如何添加库; #导入系统文件库 import pygame import random from pygame.locals import * from random import randint #定义一些窗体参数及加载字体文件 SCREEN_WIDTH = 900 # 窗体宽度 SCREEN_HEIGHT = 600 # 窗体宽度 LOW_SPEED = 4 # 字体移动最低速度 HIGH_SPEED = 10 # 字体移动最快速度 FONT_COLOR = (00,150,00) # 字体颜色 FONT_SIZE = 5 # 字体尺寸 FONT_NOM = 20 # 显示字体数量 从0开始 FONT_NAME = "calibrii.ttf" # 注意字体的文件名必须与真实文件完全相同(注意ttf的大小写),且文件名不能是中文 FREQUENCE = 10 # 时间频度 times = 0 # 初始化时间 定义随机参数 def randomspeed() : return randint(LOW_SPEED,HIGH_SPEED) def randomposition() :

5 面向对象

烂漫一生 提交于 2020-02-24 19:54:10
1 类型系统 1.1给类型添加方法 // 为类型添加方法 type Integer int // 定义一个新类型Integer, 它与int类型相同 func (a Integer) Less(b Integer) bool { // 给Integer类型添加新方法 less, less 方法输入一个整数,返回布尔值 return a < b // 当前整数a调用less方法要传入一个整数b, 如果a<b,返回true } 如果我们想在方法中修改对象,这种时候必须就要用到指针 func (a *Integer) Add (b Integer) { *a += b } func main() { a := Integer(10) a.Add(5) fmt.Println("a is : ", a) } 1.2 值语义和引用语义 b = a b.Modyfy() // 如果a的值收到影响则a为引用类型,否则为值类型 值类型的数据: 基本数据类型 符合类型: 数组, 结构体, 指针 // 数组想表达引用 var a = [3]int{1,2,3} var b = &a b[1]++ fmt.Println(a, *b) 类似引用类型的数据: 数组切片 : 指向数组的一个区间 map : 键值对 channel : 执行体间的通信设施 接口 : 对一组满足某个契约的类型的抽象 1.3

javascript线性渐变2

二次信任 提交于 2020-02-23 12:55:11
上部分 我们逐一分析了各浏览器的可行方法,这部分将搞鼓出一个统一的类来实现跨浏览器的线性渐变。 先来IE的,这是最大的用户群,如果这部分开发不出来,基本可以说不用做了。IE虽然有Gradient滤镜,但对比其他浏览器的实现特弱,没有多重渐变(stop-color),不能实现角度渐变,而且还经常失效。我的思路是这样,假如有一个带文本的DIV,要实现多重线性渐变,我们首先得把它里面的文本取出来,然后里面放几个DIV,有几重就放几个,然后把它们渐变。如果是垂直渐变,这好办,什么也不用做,只需设置其滤镜与各个高就行了。如果水平,就让其浮动或绝对定位,放到适当的位置,设置其滤镜与宽。但渐变滤镜竟然会在浮动后或定位后失效,这是在使用透明滤镜时闻所未闻的。没有办法,祭出上古神器table。但设置长与宽时,使用style来设置是不顶用的,一定要用DOM属性。渐变则由它的td元素负责。为了去除table元素与td元素之间,td元素与其内容之间的空白,我们还得用到cellPadding与cellSpacing。 //④使用IE滤镜实现渐变 function setFilter(el,start,end,type){ el.style.filter = "progid:DXImageTransform.Microsoft.Gradient(enabled='true',startColorstr="

js_fake_touch

家住魔仙堡 提交于 2020-02-23 03:12:32
let ele = document.getElementById('GameCanvas'); let rect = ele.getBoundingClientRect(); let touch = new Touch({ "identifier" : 0, "target" : ele, "clientX" : (rect.left + rect.right)/2, "clientY" : (rect.top + rect.bottom)/2, "screenX" : (rect.left + rect.right)/2, "screenY" : (rect.top + rect.bottom)/2, "pageX" : (rect.left + rect.right)/2, "pageY" : (rect.top + rect.bottom)/2, "radiusX" : 11.5, "radiusY" : 11.5, "rotationAngle" : 0.0, "force" : 1}); let touchstart = new TouchEvent("touchstart", { cancelable: true, bubbles: true, composed: true, touches: [touch], targetTouches: [touch],