问题标签 [quartz-graphics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
694 浏览

iphone - 我在 iPHone 上的 Quartz 绘图在旋转后被剪掉了!

我正在绘制三个矩形,其中一个从视图的末端脱落(即绘图大于当前视图边界),因此您看不到右边缘。这很好,但是当视图旋转时,右边缘仍然被剪裁,即使有足够的空间来绘制它。如何让视图重绘整个矩形?

我尝试过:
1)将框架和边界矩形更改为更大
2)调用 setNeedsLayout
3)调用 setContentMode:UIViewContentModeRedraw;
4) 调用 [self.view setClipsToBounds:NO]

接下来是尝试 CGLayer,除非有人提出其他建议。

-欧文

0 投票
3 回答
4587 浏览

macos - Mac OS X:一个进程可以渲染到另一个进程的窗口吗?

问候!

我目前正在将 Web 浏览器插件从 Win32 移植到 MacOSX。该插件的一个特点是,当插件被加载时,它会产生一个单独的进程,作为插件的“引擎”,并在插件的窗口中执行绘图操作(具体来说,通过将 OpenGL 上下文附加到父进程的窗口并在该上下文中执行 OpenGL 渲染命令)。我们这样做是因为插件通常作为浏览器进程中的线程加载,因此插件中的崩溃会导致整个浏览器崩溃。通过将“繁重的工作”划分为一个单独的进程并保持插件代码非常精简,我们可以保护用户免受此类崩溃的影响。

我想在 MacOSX 上保留这种子进程渲染器架构,但我听说过一个令人讨厌的谣言(与 Google Chrome 网络浏览器有关),即 MacOSX 不允许进程将对其窗口的访问权交给另一个进程. 我自己在这个领域的搜索一直没有结果。如果有人对这个问题有任何了解,并且可以就如何实现这一目标提供一些建议,或者提供更明确的“无法完成”,那将非常有帮助。

感谢您的帮助!

0 投票
4 回答
13625 浏览

iphone - 在 iPhone 的 Quartz 2D 中进行旋转变换时,我可以移动原点吗?

抱歉,如果这很明显或在其他地方被覆盖,但我整天都在谷歌上搜索,还没有找到真正有效的解决方案。

我的问题如下:我目前正在全屏 UIView 中绘制图像,例如,我们会说图像在 UIView 的右下角。我想在该图像的中心进行旋转变换(CGAffineTransformMakeRotation),但是,默认情况下,旋转命令围绕它自身的 UIView 的中心旋转。结果,当我旋转时,我的图像会在屏幕上移动,而不是停留在原地并围绕自己的中心旋转。

根据我收集到的信息,我需要翻译我的上下文,以便原点(UIView 的中心)位于我的图像中心,旋转,然后通过翻译回原始位置来恢复上下文。

以下是我最接近的工作,但问题是图像旋转时,它在旋转时向下移动。我认为这是由动画补间第一步翻译和第三步翻译引起的,而不是仅仅意识到翻译的起点和终点是相同的......

我也尝试过 CGContextTranslateCTM 和 CGContextSaveGState/UIGraphicsPushContext 之类的东西,但这些似乎效果不大。

我已经为此奋斗了好几天,我目前的解决方案似乎很接近,但我不知道如何摆脱这种翻译补间。有没有人对此有解决方案或更好的方法来解决这个问题?

[更新] 目前我正在以 UIview 的中心为中心绘制我的图像,然后将 UIView.center 属性设置为我想要旋转的原点,然后执行旋转命令。看起来有点像 hack,但在我得到真正的翻译工作之前,这是我唯一的选择。谢谢!

0 投票
3 回答
4930 浏览

iphone - 如何在 iPhone 屏幕上用线条绘制签名?

我想让用户在 iPhone 屏幕上画一个签名,所以我添加了 UIView 的一个子类,并在它的“touchesMoved”方法中添加了一些代码。

我用小矩形绘制它,结果是逐点绘制。因为太丑了,我想用线条画出签名。但是如何区分firstTouch和lastTouch呢?如果我只使用'touchesMoved'方法,我只能得到一个接触点。

0 投票
2 回答
4473 浏览

iphone - 我应该如何在 iPhone 上做多个动画?

我想为一个游戏制作多个部分的动画,并且我想让这些部分朝不同的方向移动,这样我当前为整个视图制作动画的方法将不再有效。

我想知道一次为多个项目设置动画的最佳做法是什么。(注意我在 2d 中渲染,所以我目前对 3d 解决方案不感兴趣。)

谢谢!

0 投票
1 回答
2033 浏览

iphone - 在 iPhone 应用程序中绘制这个椭圆的最佳方法是什么?

我想在我的 iPhone 应用程序中有一个与邮件应用程序类似的椭圆。仅供参考的屏幕截图在这里:http ://dl-client.getdropbox.com/u/57676/screenshots/ellipse.png

最终,我想要一个以数值为中心的椭圆。这个任务最好使用 UIImage 吗?用 Quartz 绘制它的开销可能更少?如果它是用 Quartz 完成的,任何人都可以显示绘制它的解决方案吗?

0 投票
1 回答
396 浏览

c++ - 在 Carbon 中创建 JPEG 时的 JPEG 质量

我正在编写一个 Carbon 应用程序,我们正在创建 JPEG 文件。我目前正在使用 Quartz CGImageDestinations 和 kCGImagePropertyJFIFDictionary 来执行此操作。但是,JFIF 似乎没有任何关于压缩质量的条目。有谁知道如何设置这个?

谢谢

0 投票
4 回答
15625 浏览

iphone - Quartz 2D drawRect 方法 (iPhone)

我面前有 4 种不同的iPhone/Cocoa/Core Animation/Objective-C书籍,以及来自网络的大量示例代码。然而不知何故,我仍然觉得我缺少对Quartz 2D中绘图工作原理的一些基本理解。

是否drawRect()只是一个执行绘图代码的钩子?或者这种方法是否应该也重绘“损坏”的区域,需要重绘?我可以只画一次然后它“粘”起来,还是我必须随时通过重新绘制整个场景drawRect()?Java 的 Graphics2D 对象以这种方式工作 - 每次调用 paint() 时都必须绘制整个“图像”,因此您必须随时准备重新构建它(或缓存它)。

你将如何实现一个简单的绘图程序?您是否必须“记住”用户绘制的每条线/点/笔划,并在每次drawRect()调用时复制它们?“离屏”渲染怎么样?你能画完所有的画,然后打电话[self setNeedsDisplay]让你的写入刷新到屏幕上吗?

假设为了响应用户的触摸,我想在他触摸的屏幕上放置一个“X”。X 应该保留在那里,并且每次新的触摸都会产生另一个 X。我是否需要记住所有这些修饰坐标,然后将它们全部绘制出来drawRect()

编辑:

除非我误解了,否则 joconor 和 Hector Ramos 在下面的回答是相互矛盾的。这很好地证明了我对这个主题的困惑。:-)

0 投票
4 回答
2501 浏览

iphone - iPhone 上的大多数游戏都是用 OpenGL ES 完成的吗?

我只是想知道 iPhone 上的大多数游戏是否都是在 OpenGL ES 中完成的,而不是使用 Quartz 和 Core Animation。Quartz 和 Core Animation 主要用于创建流畅的界面吗?或者,如果游戏中有一点可能必须使用 OpenGL 而不是使用其他工具?

0 投票
2 回答
290 浏览

iphone - 在 iPhone 上使用 Quartz2D 设计替代输入

我正在尝试创建一个形状像磁盘的简单 iPhone 输入设备,其中一半可以在屏幕上查看。这个想法是这个磁盘将被旋转,当磁盘停止旋转时,选择将是中间的菜单项。知道实现这种事情的最佳方式是什么吗?我现在正在阅读 Quartz2D 和 CoreAnimation,但不确定如何继续。

我只需要一个应用程序,所以在photoshop中预渲染整个shebang然后用CoreAnimation旋转它,并有一些机制来跟踪磁盘的哪个部分在“中间”(例如哪个菜单项被选中)?还是有更通用、更简单的方法?(我肯定错过了什么...)