- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 NSBox
,在其中我使用 NSRectFill()
绘制小矩形。我的代码如下所示:
for (int i = 0; i <= 100; i++){
int x = (rand() % 640) + 20;
int y = (rand() % 315) + 196;
array[i] = NSMakeRect(x, y, 4, 4);
NSRectFill(array[i]);
}
这个 for 循环在网格内创建 100 个随机放置的矩形。我一直在尝试做的是创建一种动画,由反复运行的代码创建,使用以下代码创建随机出现的矩形的动画:
for (int i = 0; i <= 10; i++) {
[self performSelector:@selector(executeFrame) withObject:nil afterDelay:(.05*i)];
}
顺便说一句,第一个 for 循环是 executeFrame
函数中唯一的东西。所以,我需要做的是删除帧之间的所有矩形,使它们的数量保持不变,并且看起来像是在移动。我尝试通过在调用 executeFrame
之前调用 [myNsBox display];
再次绘制背景来实现此目的,但这使得看起来好像没有绘制任何矩形。之后调用它做了同样的事情,所以切换到 setNeedsDisplay 而不是显示。我无法弄清楚这一点,任何帮助将不胜感激。
顺便说一下,另一件事是,当我尝试运行代码来执行帧时,而不尝试删除之间的矩形,所发生的只是绘制了 100 个以上的矩形。即使我要求抽1000,或者10,000。但是,如果我离开窗口并返回到它(立即,时间不是这里的因素),页面就会更新并且矩形就在那里。我试图通过使用 [box setNeedsDisplayInRect:array[i]];
来克服这个问题,它以一种奇怪的方式工作,导致它更新每一帧,但删除了矩形的部分。对此的任何帮助也将不胜感激。
最佳答案
听起来你是在drawRect:之外绘图。如果是这种情况,请将绘图代码移至 View (框或某些 subview )的drawRect: 方法中。否则,您的绘图将被 Cocoa 绘图系统破坏,就像您所看到的那样。您还需要使用计时器或动画而不是循环来进行重复绘图。
关于objective-c - 删除由 NSRectFill 完成的 cocoa 绘图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6553460/
当使用 NSRectFill 或 NSBezierPath.fillRect 在 NSTextView 中的某些文本上绘制 block 时,文本似乎覆盖了我的矩形。 IE。只有一小部分矩形从我应该覆盖
我正在尝试绘制并保存一个简单的图像,但它最终在 MBP RD 设备上保存的大小是原来的两倍: NSImage* image = [[NSImage alloc] initWithSize:size];
我正在尝试使用 NSRect 在 Objective-C 中绘图,但是我在网上找到的所有示例都会在输出日志中产生警告。它确实在 View 上绘制,但我希望看到调试器没有报告任何问题:)。 我读到了一些
我一直在使用NSRectFill在屏幕上绘制矩形。我想删除这些矩形。我无法在它们上面绘画,因为它们后面的背景有纹理,无法用纯色复制。这可能吗? 最佳答案 我不太了解 Objective-C 或 Coc
你好,我是 Cocoa 编程新手,我遇到了一个关于 NSRectFill 的问题。 窗口中有一个按钮,以下是我的AppDelegate.m文件: @implementation LGAppDelega
我有一个 NSBox,在其中我使用 NSRectFill() 绘制小矩形。我的代码如下所示: for (int i = 0; i <= 100; i++){ int x = (rand() %
我知道我可以使用 NSRectFill(bounds) 填充一个矩形。但是我想保留 PDF 输出的透明度,我发现我只能使用 NSBezierPath(rect: bounds).fill() 来做到这
我是 Swift 4 的新手,使用 Xcode 9 编写代码。尝试创建一个非常简单的 MacOS 绘图应用程序,只是为了更多地了解 Swift。我复制了一些非常简单的教程代码,但收到错误消息“使用未解
我是一名优秀的程序员,十分优秀!