单军华
2017-07-12 20d1260d26b028897f3c0935c12fc35aa37b2e93
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/*
*  BMKOverlayPathView.h
*  BMapKit
*
*  Copyright 2011 Baidu Inc. All rights reserved.
*
*/
 
#import <UIKit/UIKit.h>
#import "BMKOverlayView.h"
 
/// 该类定义了一个基本的OverlayView
@interface BMKOverlayPathView : BMKOverlayView {
@package    
    UIColor *_fillColor;
    UIColor *_strokeColor;
    
    CGFloat _lineWidth;
    CGLineJoin _lineJoin;
    CGLineCap _lineCap;
    CGFloat _miterLimit;
    CGFloat _lineDashPhase;
    NSArray *_lineDashPattern;
    
    CGPathRef _path;
}
 
/// 填充颜色
@property (strong) UIColor *fillColor;
/// 画笔颜色
@property (strong) UIColor *strokeColor;
 
/// 画笔宽度,默认为0
@property CGFloat lineWidth;
/// LineJoin,默认为kCGLineJoinRound
@property CGLineJoin lineJoin;
/// LineCap,默认为kCGLineCapRound
@property CGLineCap lineCap;
/// miterLimit,在样式为kCGLineJoinMiter时有效,默认为10
@property CGFloat miterLimit;
/// lineDashPhase, 默认为0
@property CGFloat lineDashPhase;
/// lineDashPattern,一个NSNumbers的数组,默认为nil
@property (copy) NSArray *lineDashPattern;
 
/**
 *生成要绘制的path,子类需要重写此函数,并且对path属性赋值:self.path = newPath;
 */
- (void)createPath;
/// path对象
@property CGPathRef path;
 
/**
 *刷新path,调用该函数将会使已经缓存的path失效,将会重新调用createPath来生成新的path对象
 */
- (void)invalidatePath;
 
 
/**
 *应用画笔属性
 *@param context CGContext对象
 *@param zoomScale 当前的zoomScale
 */
- (void)applyStrokePropertiesToContext:(CGContextRef)context
                           atZoomScale:(BMKZoomScale)zoomScale;
 
/**
 *应用画刷属性
 *@param context CGContext对象
 *@param zoomScale 当前的zoomScale
 */
- (void)applyFillPropertiesToContext:(CGContextRef)context
                         atZoomScale:(BMKZoomScale)zoomScale;
/**
 *绘制path
 *@param path 要绘制的CGPath
 *@param context CGContext对象
 */
- (void)strokePath:(CGPathRef)path inContext:(CGContextRef)context;
 
/**
 *填充path
 *@param path 要绘制的CGPath
 *@param context CGContext对象
 */
- (void)fillPath:(CGPathRef)path inContext:(CGContextRef)context;
 
@end