石英2d试图重绘三角形
|
我正在开发iPhone应用程序。
我有以下课程:
#import \"Triangulo.h\"
@implementation Triangulo
@synthesize minusValue;
- (id)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
// Initialization code
}
return self;
}
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
CGSize size = rect.size;
CGPoint origin = {10.0f, size.height - 10.0f};
[self drawLineAtOrigin:origin withLength:size.width - 10.0f];
CGPoint origin2 = {10.0f, size.height - 20.0f};
CGSize size2 = {size.width - minusValue, 20.0f};
[self drawTriangleAtOrigin:origin2 withSize: size2 inRect: rect];
}
- (void)drawLineAtOrigin:(CGPoint)origin withLength:(float)length {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0);
CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
CGContextMoveToPoint(context, origin.x, origin.y);
CGContextAddLineToPoint(context, length, origin.y);
CGContextStrokePath(context);
}
- (void)drawTriangleAtOrigin:(CGPoint)origin withSize:(CGSize)size inRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(UIGraphicsGetCurrentContext(), rect);
CGContextSetLineWidth(context, 2.0);
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
CGContextMoveToPoint(context, origin.x, origin.y);
CGContextAddLineToPoint(context, size.width, origin.y);
CGContextAddLineToPoint(context, size.width, origin.y - size.height);
CGContextAddLineToPoint(context, origin.x, origin.y);
CGContextFillPath(context);
CGContextStrokePath(context);
}
- (void)dealloc {
[super dealloc];
}
@end
此UIView是UIViewController.view的一部分。我将UIViewController.h添加为:
IBOutlet Triangulo *triangulo;
...
@property (nonatomic, retain) IBOutlet Triangulo *triangulo;
在UIViewController上,我有一个修改Triangulo的按钮:
- (IBAction)btnDrawTriangleClicked:(id)sender {
triangulo.minusValue += 10.0f;
CGRect rect = CGRectMake(0, 0, 280, 50);
[triangulo drawRect: rect];
}
但是我什么也画不出来,因为ѭ3总是为零。
有什么建议吗?
没有找到相关结果
已邀请:
2 个回复
博沮富教全
类中:
然后将“ 6”方法转换为以下内容:
现在,当您更改
时,
会自动将其自身标记为需要重新显示。 (有关更多信息,请参见查看绘图周期)。正如Deepak所说,您永远不会自己叫ѭ10(除非您本身在
方法之内,而您叫
)。系统会自动调用
方法,并且始终确保事先设置了有效的
。由于您是直接调用它,因此准备工作尚未完成,因此ѭ15通常返回ѭ16。
佩疵瓦
或
。传递给
的
不是传递的随机值。它告诉您视图边界中需要重绘的部分。