代码之家  ›  专栏  ›  技术社区  ›  Samuel

Cocoa/Objective-C:单击按钮绘制矩形

  •  1
  • Samuel  · 技术社区  · 15 年前

    人山人海, 我对可可很陌生。我有Xcode3.1

    情况: 我有一个nsobject子类:(appcontroller)和一个动作,链接到一个按钮。 比我有一个自定义视图,连接到我的nsview子类(appview),在drawrect命令中,我画一个矩形(所有的东西都可以工作)。 我在appview.m中有一个函数-(void)drawit..}它绘制矩形。 现在我把它叫做(空的)抽屉…有[自画]。这也行得通。

    我现在要做的是当按钮被点击时调用drawit。(在appcontroller.m中,当操作-(ibaction)…由于单击按钮而调用)

    希望你能帮助我, 我对stackoverflow是个新手,所以我不知道我是否应该跳过这里的所有代码,我可以,但这样读起来可能更容易些。

    1 回复  |  直到 15 年前
        1
  •  6
  •   Joshua Nozzi    15 年前

    你应该读一下 Cocoa Drawing Guide 概念材料。你的观点被要求 -drawRect: 当系统认为有必要时。在这方面,可以随时要求您的视图绘制自己。因此,你必须从“绘制当前状态”的角度来考虑这一点。

    您可能应该做的(在这个基本情况下)是给您的自定义视图一个布尔属性“drawit”,并让您的按钮操作在视图实例上切换它。这种方式 if (self.drawIt == YES) ,可以调用矩形绘图代码。

    -抽签: 调用(就像用白色填充整个边界),然后仅在满足条件时绘制条件内容。

    例子:

    - (void)drawRect:(NSRect)aRect
    {
      // Clean up background (we ignore "aRect", drawing entire view at once)
      [[NSColor whiteColor] set];
      NSRectFill([self bounds]);
    
      // Do we want to draw our magic rect?
      if ([self drawMagicRect])
      {
        [[NSColor redColor] set];
        NSRectFill([self magicRect]);
      }
    }