亲爱的Cocoa程序员,
我想要完成的任务:
我的画布上有一个复选框,一个popUpButton(隐藏)和一个NSView。 如果选中myCheckbox,请执行以下操作:>显示popUpButton并在NSView上通过bezierPath绘制一条线。 如果myCheckbox是UNchecked - >再次隐藏popUpButton并“取消”路径
代码:
- (IBAction)isChecked:(id)sender {
//if myChekcbox is checked, show the pop up button
if ([sender state]==NSOnState) {
NSLog(@"Checked");
[myPopUp setHidden:NO];
}
else
{
//if the checkbox is unchecked, hide the popupbutton
[myPopUp setHidden:YES];
NSLog(@"Unchecked");
}
//reload my drawrect method (reload the view)
[self setNeedsDisplay:YES];
}
- (void)drawRect:(NSRect)dirtyRect
{
//if the checkedbutton is checked, draw the line
if ([myCheckbox state]==NSOnState)
{
NSBezierPath *myPath = [NSBezierPath bezierPath];
[myPath moveToPoint:NSMakePoint(10, 20)];
[myPath lineToPoint:NSMakePoint(50, 20)];
[myPath setLineWidth:2];
[myPath stroke];
}
}
问题:
如果选中状态= NSOnState,则popUpButton可见,但该行不会绘制,我想知道为什么......我个人认为这是一个连接问题。
我在这里上传了项目文件(它相当小--35kb):Drawing.zip
全局: 我已经阅读了NSView文档,它说只有一种方法可以绘制到视图,它是通过drawRect方法实现的。这是真的吗?这也是一种绘制视图的下降方式吗? (如果视图中的函数和方法中的setNeedsDisplay:YES)
提前谢谢, 本答案 0 :(得分:0)
您需要获取NSColor
个实例,然后在其上调用setStroke
以设置当前笔触颜色。它不知道在drawRect:
开始时使用哪种颜色来描边路径,所以你必须告诉它。