问题标签 [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.
c - 从 PDF 文件中获取 CGImage
我有一个 PDF 文件,其中每一页都是 (LZW) TIFF 文件。我知道这一点,因为我创造了它。我希望能够加载它并将其保存为一堆 TIFF 文件。
我可以使用 CGPDFDocumentCreateWithURL 打开 PDF 文件,并获得一个页面。我什至可以将页面绘制到屏幕上。
我想做的是将页面绘制到 bitmapContext 中,这样我就可以使用 CGBitmapContextCreateImage 将图像放入 CGImageRef 中。但是,为了创建位图上下文,我需要知道图像的大小和分辨率。我似乎无法找到如何获取 CGPDFDocument 或 CGPDFPage 来告诉我该页面上图像对象的分辨率。
有没有我没有意识到的更简单的方法来做到这一点?
谢谢。
iphone - 图像上的 Quartz 2D/OpenGLES 几何失真(最好使用 CGImage)
实现捏/鱼眼/等几何扭曲的首选方法是什么?使用 iPhone SDK?我知道 OSX 的核心图像库内置了所有这些类型的过滤器,但不适用于 iPhone SDK。
给定原始源位图数据,我可以在特定位置和半径处创建置换贴图,但我不确定如何将此位图数据应用为我的 CGImage 上的转换。
这不是仿射变换,因为线在失真/等区域周围不再平行。
是否可以使用 CGImage 或者我需要使用 OpenGLES 来做到这一点?
谢谢
iphone - iPhone图像失真
模拟器会正确显示 UIImageViews,但在 iPhone 上显示不正确,有什么原因吗?
我的过程: PNG 文件中的图像 启动 UIGraphicsBeginImageContext() 在 CGrect 中绘制 PNG 在 CGRect 中绘制文本 从上下文创建 UIImage 将 UIImaveView 的图像设置为 UIImage 将 UIImageView 的框架设置为PNG 添加为子视图
结果:图像显示不正确。图像最右边的 1-3 像素只是一条垂直的白线。这仅发生在设备上而不是模拟器上。我可以解决这个问题,但只能通过增加 UIImageView 的大小。如果我将 UIImageView 的 size.height 增加 1 个像素,它会正确显示 UIImage。当然,这些让 iPhone 在将我的图像绘制到屏幕上之前对其进行缩放,这是不可取的。
任何想法为什么会发生这种情况或任何修复它?(如果需要,我会发布我的代码)
iphone - QuartzCore.framework 问题
我正在尝试使用 QuartzCore 框架,但是在将这个框架添加到我的 iPhone 应用程序时,我被告知文件(例如 CIColor.h 和其他文件)丢失了,但这些丢失的文件存在于我的硬盘驱动器下的 /system/library/
除了 QuartzCore Frame 工作之外,我还在使用以下框架:cocos2d、cocoa.framework、openGLES.framework、openAL.framework、foundation.framework、UIKit.framework 和 APPKit 框架。
有什么想法可能是错的吗?
ios - CIFilter 在 iOS 中可用吗?
在我开始实现自己的过滤器(可能使用 opengl ES)之前,我想确定一下,但iOS 上是否提供CIFilters ?有什么类似的吗?
cocoa - 在石英 2d 中禁用颜色校正
好的,我知道实际上不可能在石英中禁用颜色校正。我正在寻找的是一种与设备无关的色彩空间设置,它不会改变我在 CGLayer 中绘制的 RGB 值。
我尝试了系统库中的所有 ICC 配置文件,它们都改变了颜色。
这是我得到的最好结果:
这使用了 Apple RGB 的颜色转换矩阵和 D65 白点。
颜色仍然会发生一些变化,尽管我对此比设备相关设置更满意。
以下是我将 CGLayer 写入 TIFF 的方法:
任何帮助将不胜感激。
cocoa-touch - 石英绘图优化
我有一个视图,它有一个背景图像,并且CGPath
随着用户触摸屏幕而改变。绘制图像CGContextDrawImage()
然后在顶部绘制路径不够快,并且会阻碍触摸事件的性能。我想要的是有一个位图缓冲区,并且只绘制路径中的更改。因此,视图drawRect()
将只是绘制缓冲区。我怀疑我需要使用CGContext
s 但我不知道该怎么做。有没有其他优化方法?
编辑:
每次用户触摸屏幕时,我都会添加路径;所以“路径变化”是指向现有路径添加更多点。这就是为什么我认为我可以只缓冲图像并只绘制路径的“增量”而不是每次都绘制整个东西。目前我的绘图和事件逻辑是这样的:
以这种方式绘制背景会使触摸事件采样的性能明显低于仅绘制路径。
iphone - 如何创建像 iPhone 主屏幕这样的图标网格?
我应该如何在 iPhone 上创建类似于 Springboard(主屏幕)的 UI?我想要一个带有图像的均匀间隔按钮网格,我可以在其中响应按钮点击。
UITable 是否合适?我应该使用普通的 UIView 并在 DrawRect 中手动定位图标吗?是否有替代方案可以自动均匀地排列按钮、允许重新组织并根据 iPhone 方向调整布局?
我来自 C#/Winforms 背景,现在刚刚开始使用 2.2.1 标头在 Open Toolchain 上进行 iPhone 开发。
macos - Core Graphics 中的字体大小
我正在尝试使用 Core Graphics API 渲染一些文本,但遇到了一些概念上的困难。
我正在尝试使用CGContextSetFontSize指定字体大小。size 参数位于所谓的“文本空间单位”中。那是什么?它如何映射到“ em ”单位?
谢谢
events - 事件点击:使用 CGEventPost、kCGSessionEventTap、kCGAnnotatedSessionEventTap、CGEventTapPostEvent 改变结果
从事件水龙头发布事件时,我遇到了一个棘手的问题。我在 kCGHIDEventTap 上点击 NSSystemDefined,然后用一个新事件替换该事件。我遇到的问题是,根据我发布事件的方式,它只能被某些应用程序看到。我的测试应用程序是 Opera、Firefox、Quicksilver 和 Xcode。以下是我在事件点击回调中尝试的不同技术以及结果。我期待每个应用程序采取行动(“正确响应”);“系统哔”表示没有任何东西绑定到那个键的系统声音。
创建一个新事件,并从回调中返回它。Opera:无响应/系统提示音,Firefox:无响应/系统提示音,Quicksilver:正确响应,Xcode:无响应/系统提示音
创建一个新事件,使用 CGEventPost 发布到 kCGSessionEventTap,返回 null。Opera:无响应/系统提示音,Firefox:无响应/系统提示音,Quicksilver:正确响应,Xcode:无响应/系统提示音
创建一个新事件,使用 CGEventPost 发布到 kCGAnnotatedSessionEventTap,返回 null。Opera:正确响应,Firefox:正确响应,Quicksilver:无响应/系统哔声,Xcode:无响应/系统哔声
创建一个新事件,使用 CGEventTapPostEvent 发布,返回 null。Opera:无响应/系统提示音,Firefox:无响应/系统提示音,Quicksilver:正确响应,Xcode:无响应/系统提示音
创建一个新事件,使用 CGEventPost 发布到 kCGSessionEventTap,并返回新事件。Opera:无响应/系统提示音,Firefox:无响应/系统提示音,Quicksilver:正确响应,Xcode:无响应/系统提示音
创建一个新事件,使用 CGEventPost 发布到 kCGAnnotatedSessionEventTap,并返回新事件。Opera:正确响应和系统哔声,Firefox:正确响应和系统哔声,Quicksilver:正确响应和系统哔声,Xcode:无响应/双系统哔声
创建一个新事件,使用 CGEventTapPostEvent 发布,并返回新事件。Opera:无响应/系统提示音,Firefox:无响应/系统提示音,Quicksilver:正确响应,Xcode:无响应/系统提示音
(6) 是最好的,但用户抱怨正确响应时额外的系统蜂鸣声,我猜这是来自事件的双重发布。我不确定其他组合可以尝试,或者在哪里寻找。任何人都可以提供任何指导吗?有没有什么方法可以同时从我的回调中返回事件并发布到带注释的水龙头而不做两者?
很抱歉这个冗长的问题;我一直在做很多实验。
提前致谢
更新:这是我用来创建事件点击的代码: