2 u010025993 u010025993 于 2013.04.01 09:55 提问

iphone使用drawRect画圆

我要在UIView中画一个简单的圆形。我不想用QuartzCore,能不能用drawRect实现?

- (void)drawRect:(CGRect)rect
{
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGContextAddEllipseInRect(ctx, rect);
    CGContextSetFillColor(ctx, CGColorGetComponents([[UIColor greenColor] CGColor]));
    CGContextFillPath(ctx);
}

上述代码在设置[UIColor whiteColor]时就不工作。在设置了[UIColor whiteColor],视图就变成了透明的。

为什么设置白色但是视图变透明?怎么样画圈?

1个回答

vikeyToy
vikeyToy   2013.04.01 10:26
已采纳

greenColor 来自RGB颜色,但是whiteColor不是,所以你用错了。

最好的方法是去掉: CGContextSetFillColor(ctx, CGColorGetComponents([[UIColor greenColor] CGColor]));

换成:

[[UIColor greenColor] set];

或者

[[UIColor whiteColor] set];

另外一点,如果你需要Core Graphics,代码如下:

CGContextSetFillColorWithColor(ctx, [UIColor greenColor].CGColor);
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
iOS中drawRect方法实现画圆角矩形,顺时针和逆时针
http://blog.csdn.net/xiangzi_011/article/details/25420799 在iOS中创建自己独特的UIView,需要从UIView继承一个子类,然后重写drawRect方法,里面用GC画自己想要的效果即可。我们这里实现一个圆角矩形的绘制。 例子引用了这篇博客的代码:http://cocoa.venj.me/blog/draw-r
drawRect 绘制矩形 drawCircle 绘制圆形 drawOval 绘制椭圆 drawPath 绘制任意多边形 * drawLine 绘制直线 drawPoin 绘制点
public class DrawView extends View {          public DrawView(Context context) {           super(context);       }          @Override       protected void onDraw(Canvas canvas) {           sup
ios学习整理(二)使用drawRect:方法自定义绘图和UIBezierPath类
视图根据drawRect: 方法将自己绘制到图层上。UIView的子类可以覆盖drawRect:方法,从而完成自定义的绘图任务. 覆盖drawRect:方法后首先应该获取视图从UIView继承而来的bounds属性,该属性定义了一个矩形范围,表示视图的绘制区域。 在这里要注意frame与bounds的不同,frame用于确定与视图层次结构中其他视图的相对位置,从而将自己的图层与其他视图的图层正
Cocos2d-js 学习(四): DrawNode简单使用
cocos2d-js 学习,drawNode的简单使用
Cocos2d-x——DrawNode绘制图形
DrawNode *drawNode=DrawNode::create();     addChild(drawNode);          // 画像素点(方点) 位置、尺寸、颜色     drawNode->drawPoint(Vec2(50, 50), 15, Color4F(1, 0, 0, 1));          // 画圆点 (圆点) 位置、半径、颜色    
iOS UIView中 - (void)drawRect:(CGRect)rect;和-(void)ViewLayoutSubViews;的调用时机
1、自定义画图 - (void)drawRect:(CGRect)rect; is invoked automaticall,never call it directly!!(自动调用,不会直接调用) 2、刷新视图 - (void)setNeedsDisplay; When a view needs to be redrawn,use:(当视图需要重绘时调用此方法,会自动触发drawRe
[iOS - (void)drawRect:(CGRect)rect] 绘制一个居中的矩形
使用到: CGRectInset CGRectoffset UIEdgeInsetsInsetRect 这三个函数的使用情况//CGRectInset 将原来的矩形放大或者缩小,正表示缩小,-表示放大。 CGRect rect= CGRectMake(20, 50, 100, 80); CGRect rect1=CGRectInset(rect, -10, 20); NSLog(@"
PyQt5初级教程--PyQt5中绘画[11/13]
想用PyQt5写GUI,但是网上的PyQt5资源太少了,找到一个英文的,翻译一下,和学习PyQt5的同学共勉! (本系列中所有代码在windows7 64位[]/Python 3.4.3 32bit/PyQt GPL v5.5 for Python v3.4 (x32)/eric6-6.0.8下测试通过.) 原本地址:http://zetcode.com/gui/pyqt5/ =====
使用drawRect有什么影响?
drawRect方法依赖Core Graphics框架来进行自定义的绘制,但这种方法主要的缺点就是它处理touch事件的方式:每次按钮被点击后,都会用setNeddsDisplay进行强制重绘;而且不止一次,每次单点事件触发两次执行。 这样的话从性能的角度来说,对CPU和内存来说都是欠佳的。特别是如果在我们的界面上有多个这样的UIButton实例。
QT 基本图形绘制
1. 绘制图形 protected:     void paintEvent(QPaintEvent *); void Widget::paintEvent((QPaintEvent *event) {     QPainter painter(this); //this为绘图设备,即表明在该部件上进行绘制     painter.drawLine(QPaint(0, 0), QP