画太极图

画太极图

{
    CGFloat _degree;//表示当前的角度
    CGFloat _r;//表示半径
    CGFloat _R;//view的宽度/2
    CGFloat _eye;//孔
}

- (id)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        self.backgroundColor = [UIColor clearColor];
        _degree = 30;
        _r = frame.size.width/2 - 1;
        _R = frame.size.width/2;
        _eye = _r/6;//小圆
    }
    return self;
}
float degreeToRadian(float degree) {
    return  M_PI / 180 * degree;
}

- (void)drawRect:(CGRect)rect {
    CGContextRef crf = UIGraphicsGetCurrentContext();
    CGContextAddEllipseInRect(crf, CGRectMake(1, 1, _r * 2, _r * 2));
    CGContextStrokePath(crf);
    //右上角的半圆
    CGContextAddArc(crf, _R + _r * cos(degreeToRadian(_degree))/2, _R - _r * sin(degreeToRadian(_degree))/2, _r/2, degreeToRadian(-_degree), degreeToRadian(-_degree + 180), 0);
    //左下角的半圆
    CGContextAddArc(crf, _R - _r * cos(degreeToRadian(_degree))/2, _R + _r * sin(degreeToRadian(_degree))/2, _r/2, degreeToRadian(-_degree), degreeToRadian(-_degree + 180), 1);
    //大圆,回到起点
    CGContextAddArc(crf, _R, _R, _r, degreeToRadian(-_degree + 180), degreeToRadian(-_degree), 1);

    CGContextAddEllipseInRect(crf, CGRectMake(_R + _r * cos(degreeToRadian(_degree))/2 - _eye, _R - _r * sin(degreeToRadian(_degree))/2 - _eye, _eye * 2, _eye * 2));
    CGContextAddEllipseInRect(crf, CGRectMake(_R - _r * cos(degreeToRadian(_degree))/2 - _eye, _R + _r *sin(degreeToRadian(_degree))/2 - _eye, _eye * 2, _eye * 2));
    CGContextFillPath(crf);
}
时间: 2024-10-17 09:18:51

画太极图的相关文章

css3画太极图

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv=&q

Div+Css画太极图源代码

<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>Div+Css太极图</title> <style type="text/css"> .circle{ width: 100px; height: 50px; border:1px solid black; border-radius: 100px; position

vertex source顶点源直接传递给scanline rasterizer效果

AGG内置了大量的顶点源,我们可以直接调用,他们包括: agg::path_storage agg::arc agg::rounded_rect agg::ellipse agg::curve3 agg::curve4 ...... 1)针对agg::path_storage 现在尝试查看agg::path_storage直接传递给scanline rasterizer之后的效果: //现在我们尝试描绘一条线段,这里有一个问题不通过agg::conv_stroke,怎么 //设置线段的宽度,默认

缓解胃痛5小妙招

在出现胃痛而身边没有任何药物的情况下,有些简单易行的方法可以缓解疼痛.   揉内关:内关穴位于手腕正中,距离腕横纹约三横指(三个手指并拢的宽度)处,在两筋之间取穴.用拇指揉按,定位转圈36次,两手交替进行,疼痛发作时可增至200次.   点按足三里:足三里穴位于膝盖边际下三寸(相当于四个手指并拢的宽度),ZFB型防闭塞装置,在胫骨和腓骨之间.以两手拇指端部点按足三里穴,平时36次,痛时可揉200次左右,手法可略重.   揉按腹部:两手交叉,男右手在上,左手在下:女左手在上,右手在下.以肚脐为中心

Python 第二周练习

1, 画一组同心圆 ???????????????????????????????????????????????????????????????????????????????????????????????? 描述 利用turtle库画一组同心圆.用户输入最小圆的半径.圆的个数和画笔颜色,每个相邻圆半径相差20.???????????????????????????????????????????????????????????????????????????????????????????

第二周练习

1.画五角星 import turtle turtle.pensize(5) turtle.pencolor("yellow") turtle.fillcolor("red") turtle.begin_fill() for i in range(5): turtle.forward(200) turtle.right(-72) turtle.forward(200) turtle.left(-144) turtle.end_fill() turtle.hidetu

画出太极图

今天在网上看到有网友发出了C++的生成太极图算法,兴起之下用Delphi抄了下,效果还可以. 参考地址:http://www.cnblogs.com/WhyEngine/p/4051149.html 先上代码: procedure TForm1.Button1Click(Sender: TObject); var Cs: TCanvas; s: Double; i, j, aoffset, r: Cardinal; begin cs := Canvas; cs.Brush.Color := cl

用CSS画英文字母

起因是在网上看到了有人用纯css画出了英文字母,感觉不难,了解过css3的话都会感觉思路比较直观 主要用到的css知识点:绝对定位,圆角属性以及元素的宽高均为零时边框的挤压性质 效果图 源代码 <!DOCTYPE html> <html> <head> <title>CSS-Letter</title> <meta charset="utf-8"/> <style type="text/css&qu

Html5 绘制旋转的太极图

采用Html5+JavaScript在Canvas中绘制旋转的太极图,如下图所示: 具体思路和绘制逻辑,在上图中已有说明,代码如下: 1 <script type="text/javascript"> 2 3 //只画边框线,无填充 4 function bigCircle(ctx,x, y, r, st, end, w,oc) { 5 ctx.lineWidth = w; 6 ctx.beginPath(); 7 ctx.arc(x, y, r, st, end, oc)