1標頭檔案.h
//
// pieview.h
// blurdemo
//// created by sj_w on 15/9/11.
//#import @inte***ce pieview : uiview
@property (nonatomic, strong) nsarray *percentarr;//百分比分段
@property (nonatomic, strong) nsmutablearray *anglearr;//對應的弧度
@property (nonatomic, strong) nsmutablearray *midanglearr;//每個弧度分段的中心點位置
@end
2、.m檔案
//
// pieview.m
// blurdemo
//// created by sj_w on 15/9/11.
//#import "pieview.h"
#define kscreenwidth [uiscreen mainscreen].bounds.size.width
#define outr ((kscreenwidth)/4)
#define inr ((kscreenwidth/4)-26)
#define piecenterx kscreenwidth/2
#define piecentery 150
#define piecenter cgpointmake(kscreenwidth/2, frame.size.height/2)
#define labeltag 121
@implementation pieview
- (id)initwithframe:(cgrect)frame
return self;
}- (void)initsubviews
}- (void)initarr
}// only override drawrect: if you perform custom drawing.
// an empty implementation adversely affects performance during animation.
- (void)drawrect:(cgrect)rect {
//繪製外圓填充綠色
cgcontextref context = uigraphicsgetcurrentcontext();
cgcontextsetfillcolorwithcolor(context, [uicolor greencolor].cgcolor);
cgcontextaddarc(context, kscreenwidth/2, 150, outr, 0, 2*m_pi, 0);
cgcontextfillpath(context);
//繪製外圓設定顏色為白色
cgcontextsetlinewidth(context, 2);
cgcontextsetstrokecolorwithcolor(context, [uicolor whitecolor].cgcolor);
cgcontextaddarc(context, piecenterx, piecentery, outr, 0, 2*m_pi, 0);
cgcontextstrokepath(context);
//繪製內圓填充色為橙色
cgcontextsetfillcolorwithcolor(context, [uicolor orangecolor].cgcolor);
cgcontextaddarc(context, piecenterx, piecentery, inr, 0, 2*m_pi, 0);
cgcontextfillpath(context);
//繪製內圓顏色為白色
cgcontextsetlinewidth(context, 2);
cgcontextaddarc(context, piecenterx, piecentery, inr, 0, 2*m_pi, 0);
cgcontextsetstrokecolorwithcolor(context, [uicolor whitecolor].cgcolor);
cgcontextstrokepath(context);
for (int i = 0; i < self.anglearr.count; i++) {
//根據弧度算內分割的線的起始點
cgfloat angle = [self.anglearr[i] floatvalue];
cgpoint inpoint = cgpointmake(piecenterx+inr*cos(angle), piecentery+inr*sin(angle));
cgpoint outpoint = cgpointmake(piecenterx+outr*cos(angle), piecentery+outr*sin(angle));
//連線起始點
cgcontextsetlinewidth(context, 2.0);
cgcontextsetstrokecolorwithcolor(context, [uicolor whitecolor].cgcolor);
cgcontextmovetopoint(context, inpoint.x, inpoint.y);
cgcontextaddlinetopoint(context, outpoint.x, outpoint.y);
cgcontextstrokepath(context);
//算每個分段弧度的中心點位置
cgfloat midangel = [self.midanglearr[i] floatvalue];
cgpoint midpoint = cgpointmake(piecenterx+(inr+outr)/2.0*cos(midangel), piecentery+(inr+outr)/2.0*sin(midangel));
// cgcontextsetfillcolorwithcolor(context, [uicolor whitecolor].cgcolor);
// cgcontextaddarc(context, midpoint.x, midpoint.y, 3, 0, 2*m_pi, 0);
// cgcontextfillpath(context);
//每個分段延伸出去的折點
cgpoint breakpoint = cgpointmake(piecenterx+(outr+(outr-inr)/2.0)*cos(midangel), piecentery+(outr+(outr-inr)/2.0)*sin(midangel));
// cgcontextsetfillcolorwithcolor(context, [uicolor whitecolor].cgcolor);
// cgcontextaddarc(context, breakpoint.x, breakpoint.y, 3, 0, 2*m_pi, 0);
// cgcontextfillpath(context);
//結束點的位置,確定說明文字的放置位置
cgpoint endpoint;
if (breakpoint.x//效果圖
三角函式與反三角函式的使用
假設該三角形是直角三角形。那麼 依照數學基礎是 sin b b c 其中b是邊b對應的角 但是在c c 程式上面稍微有點不同 那就是弧度制與角度制的區分 先說三角函式,在 程式設計裡面 舉sin 為例 sin 弧度制 只有裡面放弧度制,才能算的精準,假設要算45 的sin值 那麼對45 進行轉換為弧...
常見三角函式與反三角函式
16341019 資料科學與計算機學院 toc 三角函式公式 反三角函式公式 簡單函式影象 1三角函式公式 兩角和公式 sin a b sinacosb cosasinb sin a b sinacosb cosasinb cos a b cosacosb sinasinb cos a b cosa...
常見三角函式與反三角函式
16341019 資料科學與計算機學院 toc 三角函式公式 反三角函式公式 簡單函式影象 1三角函式公式 兩角和公式 sin a b sinacosb cosasinb sin a b sinacosb cosasinb cos a b cosacosb sinasinb cos a b cosa...