首页 > 编程语言 > 详细

Swift绘图

时间:2015-12-22 19:08:18      阅读:348      评论:0      收藏:0      [点我收藏+]
//: OS X

import Cocoa


class SAMView:NSView
{
    override func drawRect(dirtyRect: NSRect)
    {
        // 在保持其中心点不变的情况下使其收缩, 在x轴上收缩1个点 在y轴上收缩1个点
        let pathRect = NSInsetRect(self.bounds, 1, 1)
        
        let path = NSBezierPath(roundedRect: pathRect, xRadius: 50, yRadius: 50)
        path.lineWidth = 1
        
        NSColor.greenColor().setFill()
        NSColor.blackColor().setStroke()
        
        path.fill()
        path.stroke()
    }
    
}



let viewRect = NSRect(x: 0, y: 0, width: 100, height: 100)
let myEmptyView = SAMView(frame: viewRect)





class SAMView1 :NSView
{
    override func drawRect(dirtyRect: NSRect) {
        
        let bezierPath = NSBezierPath()
        let selfRect = self.bounds
        let drawingRect = CGRectInset(selfRect, selfRect.width * 0.05, selfRect.width * 0.05)
        
        // 确定点
        let topLeft = CGPointMake(CGRectGetMinX(drawingRect), CGRectGetMaxY(drawingRect))
        let topRight = CGPointMake(CGRectGetMaxX(drawingRect), CGRectGetMaxY(drawingRect))
        
        let bottomLeft = CGPointMake(CGRectGetMinX(drawingRect), CGRectGetMinY(drawingRect))
        let bottomRight = CGPointMake(CGRectGetMaxX(drawingRect), CGRectGetMinY(drawingRect))
        let center = CGPointMake(CGRectGetMidX(drawingRect), CGRectGetMidY(drawingRect))
        
        bezierPath.moveToPoint(topLeft)
        bezierPath.lineToPoint(topRight)
        bezierPath.lineToPoint(bottomLeft)
        bezierPath.curveToPoint(bottomRight, controlPoint1: center, controlPoint2: center)
        
        bezierPath.closePath()
        NSColor.redColor().setFill()
        NSColor.blackColor().setStroke()

        bezierPath.fill()
        bezierPath.stroke()

    
    }
    
}


let frame = CGRect(x: 0, y: 0, width: 200, height: 200)
let targetView = SAMView1(frame: frame)


class SAMView2 :NSView
{
    override func drawRect(dirtyRect: NSRect) {
        
        let bezierPath = NSBezierPath()
        
        let squareRect = CGRectInset(dirtyRect, dirtyRect.width * 0.045, dirtyRect.height * 0.05)
        
        let circleRect = CGRectInset(dirtyRect, dirtyRect.width * 0.3, dirtyRect.height * 0.3)
        
        
        let cornerRadius :CGFloat = 20
        
        
        let circlePath = NSBezierPath(ovalInRect: circleRect)
        let squarePath = NSBezierPath(roundedRect: squareRect, xRadius: cornerRadius, yRadius: cornerRadius)
        
        // append path to main path
        squarePath.appendBezierPath(circlePath)
        bezierPath.appendBezierPath(squarePath)
        
        NSColor.redColor().setFill()
        
        bezierPath.fill()
        
    }
    
}

let frame2 = CGRectMake(10, 10, 200, 200)

let view2Target = SAMView2(frame: frame2)



class SAMShadowView: NSView
{
    override func drawRect(dirtyRect: NSRect) {
        
        let drawingRect = CGRectInset(dirtyRect, dirtyRect.width * 0.1, dirtyRect.height * 0.1)
        
        let cornerRadius: CGFloat = 20
        
        let bezierPath = NSBezierPath(roundedRect: drawingRect, xRadius: cornerRadius, yRadius: cornerRadius)
        
        NSGraphicsContext.saveGraphicsState()
        
        let shadow = NSShadow()
        
        shadow.shadowColor = NSColor.blackColor()
        shadow.shadowOffset = CGSizeMake(3, -3)
        
        shadow.shadowBlurRadius = 10
        
        shadow.set()
        
        NSColor.redColor().setFill()
        
        bezierPath.fill()
        NSGraphicsContext.restoreGraphicsState()
        
    }
    
    
}


let frameShadow = CGRectMake(0, 0, 100, 100)

let shadowView = SAMShadowView(frame: frameShadow)




class SAMGradient: NSView
{
    override func drawRect(dirtyRect: NSRect) {
        
        let drawingRect = CGRectInset(dirtyRect, dirtyRect.width * 0.1, dirtyRect.height * 0.1)
        
        let cornerRadius:CGFloat = 20
        
        let bezierPath = NSBezierPath(roundedRect: drawingRect, xRadius: cornerRadius, yRadius: cornerRadius)
        
        let startColor = NSColor.blackColor()
        let endColor = NSColor.whiteColor()
        
        let gradient = NSGradient(startingColor: startColor, endingColor: endColor)
        
        gradient?.drawInBezierPath(bezierPath, angle: 90)
        
    }
}


let frameSAMGradient = CGRectMake(0, 0, 150, 150)

let gradientView = SAMGradient(frame:frameSAMGradient)



class SAMViewCTM: NSView
{
    override func drawRect(dirtyRect: NSRect) {
        
        let pathRect = CGRectInset(self.bounds, self.bounds.size.width * 0.1, self.bounds.size.width * 0.1)
        
        let cornerRadius: CGFloat = 20.0
        
        let rotationTransform = CGAffineTransformMakeRotation(CGFloat(M_PI) / 4.0)
        
        let rectanglePath = NSBezierPath(roundedRect: pathRect, xRadius: cornerRadius, yRadius: cornerRadius)
        
        let context = NSGraphicsContext.currentContext()!.CGContext
        
        CGContextSaveGState(context)
        
        CGContextConcatCTM(context, rotationTransform)
        
        NSColor.redColor().setFill()
        rectanglePath.fill()
        
        CGContextRestoreGState(context)
        
    }
    
    
}


let frameCTM = CGRectMake(0, 0, 100, 100)
let viewCTM = SAMViewCTM(frame: frameCTM)

  

 

iOS :

//: Playground - noun: a place where people can play

import UIKit


/// iOS中绘制渐变
class SAMView: UIView
{
    override func drawRect(rect: CGRect) {
        
        let colorSpace = CGColorSpaceCreateDeviceRGB()
        let context = UIGraphicsGetCurrentContext()
        
        let gradientStartColor = UIColor(red: 0.1, green: 0.1, blue: 0.8, alpha: 1)
        let gradientEndColor = UIColor(red: 1, green: 0.6, blue: 0.8, alpha: 1)
        
        let gradientColors: CFArray = [gradientStartColor.CGColor,gradientEndColor.CGColor]
        
        let gradientLocations :[CGFloat] = [0.0,1.0]
        
        let gradient = CGGradientCreateWithColors(colorSpace, gradientColors, gradientLocations)
        
        let pathRect = CGRectInset(self.bounds, 20, 20)
        
        let topPoint = CGPointMake(self.bounds.size.width / 2, 20)
        let bottomPoint = CGPointMake(self.bounds.size.width, self.bounds.size.height - 20)
        
        let roundeRectanglePath = UIBezierPath(roundedRect: pathRect, cornerRadius: 4)
        
        CGContextSaveGState(context)
        
        roundeRectanglePath.addClip()
        
        CGContextDrawLinearGradient(context, gradient, bottomPoint, topPoint, .DrawsAfterEndLocation)
        
        CGContextRestoreGState(context)
        
    }
}


let frame = CGRectMake(0, 0, 100, 100)

let view = SAMView(frame: frame)

  

 

Swift绘图

原文:http://www.cnblogs.com/wolfman4secret/p/5067415.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!