gpt4 book ai didi

objective-c - 如何在 Cocoa 中绘制正方形网格?

转载 作者:行者123 更新时间:2023-12-03 17:23:39 25 4
gpt4 key购买 nike

我正在制作视觉效果 Conway's Game of Life cocoa 计划。当然,主视图基本上是一个方形图 block 网格,随着算法的进展,它的颜色会在黑白之间变化,但我很难找出绘制和管理这个方形网格的最佳方法。

我最初的想法是让每个图 block 都是 NSView 的子类。绘图非常简单:如果它还活着,则将其填充为黑色,如果它已死,则将其填充为白色。但我不知道如何将它放在窗口中;在 Interface Builder 中将其布局为单独的 NSView(并为每个 NSView 设置 IB 导出)似乎很乏味。我可以通过编程方式定位它们,但这似乎也很乏味(特别是因为我希望每个图 block 之间有一点空间)。

我记得 NSMatrix 是专门设计用于处理界面对象数组(或网格)的,所以我想我可以创建 NSView 子类的 NSMatrix。问题是,似乎你只能创建 NSControls 的 NSMatrix 。我的自定义图 block View 本身并不是真正的控件,因为它不需要接受鼠标跟踪事件等,但我想我可以伪造它并仅将其用于绘图(并且只需忽略任何事件)。

当然,如果你使用一大堆相同类型的 NSControl,最好使用 NSCell 来进行绘图,但 NSCell 似乎更适合绘制基于文本或图像的控件;我没有看到一种简单的方法来绘制黑色或白色的矩形。

我倾向于滥用 NSControl 子类来进行绘图,并跳过将 NSCell 与之关联,但我想知道是否有更好的方法或我还没有想到的东西。

最佳答案

一种方法是在 View 中托管一个 CALayer,并为每个单元格创建一个 CALayer(每个单元格层都是 View 层的子层)。然后只需设置图层的背景颜色即可。

关于objective-c - 如何在 Cocoa 中绘制正方形网格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13319045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com