0

亲爱的 Cocoa 程序员,

我想完成的事情:

我的画布上有一个复选框、一个 popUpButton(它是隐藏的)和一个 NSView。如果选中 myCheckbox -> 显示 popUpButton 并通过 NSView 上的 bezierPath 画一条线。如果 myCheckbox 未选中 -> 再次隐藏 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)

在此先感谢,本

4

1 回答 1

0

您将需要获取一个NSColor实例,然后调用setStroke它来设置当前的笔触颜色。它不知道在 的开头使用哪种颜色来描边路径drawRect:,所以你必须告诉它。

于 2013-08-20T08:25:35.890 回答