更改颜色和形状ft。《惊奇队长》

其实一开始刚看看无限之战后,我一度犹豫看惊奇队长《惊奇队长》的,除非是复仇者被打得太惨了,另外因为惊奇队长的外表与造型我不行,加上网路两极的影评,不过就像《 Alita》好坏应该还是要你自己去证明它,毕竟起源电影就是有身世解谜的感觉。

看完觉得很以女性的角度去拍,自我定义的探索,成长环境性别歧视的奋斗,对女性至高无上博士的开始,当与最高情报对战时把脖子上的贴纸拿掉的时候,我仿佛看到标签上写的字是-女人,是容易很刻意,但看得很爽。

不过惊奇队长最后以一挡百的超能力真的让我太惊奇也太惊吓了,惊奇到我觉得太跳跃,太虎烂…可怜前面Jude Low饰演的Yon-Roggsh被铺得这么好…。

另外值得一提就是整部片的音乐就是非常90的庞克摇滚,一听到大学时期喜欢的Garbage女主唱的“ Only Happy When It Rains”,我的拳头都硬了…(跟船长Marvel一样)

这次的目标是画惊奇队长身后那个像枫叶的八芒星标志和上霓虹色,这个概念的发想是片中小女孩为惊奇队长换掉克里人的军服,按着按钮选了各种配色,最后是惊奇队长身上的件。

  1. 使用Geogebra

GeoGebra | 免费的数学应用程序–全球超过1亿学生和教师使用
获取免费的在线数学工具,用于图形,几何,3D等! www.geogebra.org

2.一半对衬的写法

从程式制作国旗—利用游乐场画画加拿大国旗
这次的作业是利用程式来画出国旗,我挑选了加拿大国旗来做练习 medium.com

一开始使用Geogebra找座标时时,以左下为(0,0),并且按照iPhone8的大小设图大小为375 * 664

然后star View的裁切图就跑到下面,我想了老半天,啊,iPhone的(0,0)在左上!,不管负值,key正数就对了。

  //星星座标 
  var starPointA = CGPoint(x:200,y:0) 
  var starPointB = CGPoint(x:107,y:160) 
  var starPointC = CGPoint(x:25,y:143) 
  var starPointD = CGPoint(x:43,y:235) 
  var starPointE = CGPoint(x:-56,y:286) 
  var starPointF = CGPoint(x:52,y:342) 
  var starPointG = CGPoint(x:25,y:434) 
  var starPointH = CGPoint(x:115,y:416) 
  var starPointI = CGPoint(x:200,y:513) 
  var starPoints:[CGPoint] = [starPointA,starPointB,starPointC,starPointD,starPointE,starPointF,starPointG,starPointH,starPointI] 

不过我也发现因为座标是绝对值,从而的缺点就是没办法做Auto Layout

例如原来这个座标因为是照iPhone8的大小去捉位置的,放到iPhoneXR星芒裁图就会跑掉。

然后使用UIBezierPath()画星星,局部是starView.addSubview(bgImageView),这样就会产生星芒裁切的效果

  //画一半星星 
   starPath = UIBezierPath() 
   starPoint = starPoints [0] 
  starPath.move(发送至:starPoint) 
  //产生另一半的星星 
  对于 i in 0 .. <starPoints.count { 
  starPath.addLine(to:starPoints [i]) 
  for j in 0 .. <starPoints.count { 
  starPoints [j] .x =(200-starPoints [j] .x)+ 200 
  starPath.addLine(to:starPoints [j]) 
  } 
  starPath.close() 
   starLayer = CAShapeLayer() 
  starLayer.path = starPath.cgPath 
  starView.layer.mask = starLayer 
  starView.addSubview(bgImageView) 
  } 

另外还有做slider控制gradientLayer可以乱数产生RGB的值,实际上使用原来的按钮控制就可以,另外做slider的原因是slider拉的时候会有海报里队长闪烁变化的感觉。

  func gradientChanged(){ 
  红色= Double.random(在:0 ... 1) 
  绿色= Double.random(在:0 ... 1) 
  蓝色= Double.random(in:0 ... 1) 
   alpha = Double.random(in:0 ... 1) 
  starView.backgroundColor = UIColor(红色:CGFloat(红色),绿色:CGFloat(绿色),蓝色:CGFloat(蓝色),alpha:CGFloat(alpha)) 
   gradientLayer = CAGradientLayer() 
  gradientLayer.frame = gradationImageView.bounds 
  gradientLayer.colors = [UIColor.blue.cgColor,UIColor.magenta.cgColor] 
  gradientLayer.startPoint = CGPoint(x:0,y:0) 
  gradientLayer.endPoint = CGPoint(x:1,y:1) 
  gradientLayer.locations = [0,NSNumber(value:gradientSlider.value)] 
  gradationImageView.layer.addSublayer(gradientLayer) 
  } 

特别要注意gradationImageView的alpha值要设0才能让变化跑出来

好啦,接下来勇敢地往惊奇队长胸口的星芒按下去(如果你不怕被欧飞到外太空的话),就可以看到效果惹恼。

留在奇妙的Github中!

gmb728 / captainMarvel
通过在GitHub上创建一个帐户为gmb728 / captainMarvel开发做出贡献。 github.com