小编STW*_*STW的帖子

iPhone - 在矢量应用程序上创建Quartz路径?

我梦想能够使用Illustrator创建矢量对象并将它们导出为石英路径.那可能吗?

它需要作为Quartz路径,因为我希望能够用颜色,渐变等填充路径.

我怎么做?有没有办法从插图画家或此类应用程序导出(?)并在Xcode上导入路径以在iPhone/iPad上使用?

是否有任何库可以转换它们或应用程序?

提前致谢

iphone svg adobe-illustrator quartz-graphics

7
推荐指数
1
解决办法
1490
查看次数

在iPhone上绘制一个简单的图形

有谁知道在我的iPhone应用程序中为我绘制图形的任何现有代码?我只需要一个没有标签的简单折线图或数据的标题甚至轴标签.

或者有没有人有关于从哪里开始的想法,以便我可以学习如何绘制这样的东西?我从未处理过iPhone的实际图形.到目前为止,我的所有应用程序都是基于图像

谢谢!

iphone graphics quartz-graphics ios

7
推荐指数
2
解决办法
9144
查看次数

如何确定和解释CGImage的像素格式

我使用以下方法加载此(非常小)的图像:

UIImage* image = [UIImage named:@"someFile.png"];
Run Code Online (Sandbox Code Playgroud)

图像为4x1,按顺序从左到右包含红色,绿色,蓝色和白色像素.

接下来,我从底层CGImage中获取像素数据:

NSData* data = (NSData*)CGDataProviderCopyData(CGImageGetDataProvider(image.CGImage));
Run Code Online (Sandbox Code Playgroud)

现在,出于某种原因,像素数据的布局取决于iOS设备.

当我在模拟器或iPhone 4上运行应用程序时,像素数据如下所示:

(255,0,0),(0,255,0),(0,0,255),(255,255,255)

因此,像素为每像素3个字节,蓝色为最高有效字节,红色为最低有效字节.所以我想你称之为BGR?

当我检查CGBitmapInfo时,我可以看到kCGBitmapByteOrderMask是kCGBitmapByteOrderDefault.我无法找到解释"默认"的地方.

另一方面,当我在我的第一代iPhone上运行时,像素数据如下所示:

(0,0,255,255),(0,255,0,255),(255,0,0,255),(255255255255)

因此每个通道4个字节,alpha作为最重要的字节,蓝色作为最不重要的字节.所以......这叫做ARGB?

我一直在查看CGBitmapInfo,了解如何检测布局的线索.在第一代iPhone上,kCGBitmapAlphaInfoMask是kCGImageAlphaNoneSkipFirst.这意味着忽略了最重要的位.这是有道理的.在第一代iPhone上,kCGBitmapByteOrderMask是kCGBitmapByteOrder32Little.我不知道这意味着什么或如何将它与R,G和B组件如何在内存中布局相关联.任何人都可以对此有所了解吗?

谢谢.

iphone pixels quartz-graphics cgimage ios

7
推荐指数
1
解决办法
6032
查看次数

如何从磁盘上的图像制作CGImageRef

我到处寻找无济于事.我正在线程中进行一些图像加载,因为UIKit不是线程安全的,我将不得不将图像存储为CGImageRefs,但我无法弄清楚如何做到这一点.我之前没有使用任何Quartz的东西,所以这让我很困惑.基本上我只需要将磁盘中的JPG加载到CGImageRef中.同样对于奖励积分,无论如何将GIF加载到CGImageRef中?

iphone jpeg gif quartz-graphics cgimage

6
推荐指数
2
解决办法
2万
查看次数

iPhone - 编码和解码NSValue

所以我在这里读到我可以用CGLayerRef编译CGLayerRef到NSValue

NSValue *myCopy = [[NSValue alloc] initWithBytes:&myLayer objCType:@encode(CGLayerRef)]; 
Run Code Online (Sandbox Code Playgroud)

但是如何从myCopy重新创建CGLayerRef?

谢谢

iphone cocoa quartz-graphics cglayer

6
推荐指数
1
解决办法
731
查看次数

在视图中绘制许多UIBezierPath

UIBezierPath根据手指动作在视图上绘制了几个s.

每次触摸循环 - 开始/移动/结束 - 完成后,我存储点并创建一个UIBezierPath存储在一个名为的数组中bezierArray.我有另一个调用的数组bezierArrayColors存储每个路径的颜色.

问题是这个.该课程使用drawRect.据我所知,每次drawRect运行时,都必须绘制所有创建的路径,现在应用程序速度很慢.

这是我的drawRect现在.我知道这很蹩脚,但我不知道如何做到这一点.

- (void)drawRect:(CGRect)rect {
   for (int i=0; i<[self.bezierArray count]; i++) {
        UIBezierPath *aPath = (UIBezierPath*)[self.bezierArray objectAtIndex:i];
        UIColor *aColor = (UIColor*)[self.bezierArrayColor objectAtIndex:i];
    [aPath setLineWidth:LINE_WIDTH];

    [aColor setStroke];
    [aPath stroke];
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法UIBezierPath使用子路径划分不同颜色或宽度?我的意思是,改变子路径的颜色,宽度和其他属性?这将允许我使用UIBezierPath具有几个不同子路径的一个.我希望有一个bezier可以被绘制并留在那里而不需要每次都重绘.我错过了什么?

cocoa-touch objective-c quartz-graphics ios uibezierpath

6
推荐指数
1
解决办法
4508
查看次数

两个 Quartz-Worker 执行同一作业两次

我们已经实现了quartz来进行调度。每个产生的作业都有不同的key。到目前为止一切正常。昨天我们遇到了一个问题,因为同一个作业被两个不同的 Quartz-Worker 线程执行了两次或三次(没有特殊行为)。我们不能将线程池大小设为一,因为我们需要并发作业。

关于我们的计划作业,值得注意的一件事是,它会在每次运行时自行重新安排(每日、每周或每月),即,如果安排作业每天运行,那么它将在接下来的 24 小时内重新安排自己,但会随机预定义(例如 3 小时)时间窗口。例如,如果某个作业今天在 4:10(即 4:00 到 7:00 之间)运行,那么我们的作业会将其自行重新安排到明天 4:00 到 7:00 之间的某个随机时间。它可以是 4:01 或 6:59 或 5:23 或给定时间窗口中的任何其他值。这个过程也运行良好,并且在大多数情况下仍然运行良好,但在某些情况下,我们的重新安排算法无法在接下来的 24 小时内自行安排。相反,它会在接下来的 10 秒、1 小时或任何其他随机值内自行安排。但在2-3次错误的重新安排之后,它最终稳定下来,即它最终在接下来的24小时内自行安排。我们怀疑这可能是由于多个线程访问 Calendar 对象而发生的(我们使用 Calendar.getInstance() 和 cal.add(Calendar.DAY_OF_YEAR, 1) 在接下来的 24 小时内重新安排作业)。不知何故,日历实例选择了错误的时间或无法在当前时间添加一天。

因此,存在两个问题: 1. 多个 Quartz 线程获取相同的作业 2. 日历无法添加给定的间隔或在某些特定情况下选择错误的当前时间(多线程访问)

任何帮助将不胜感激。尽快回复。谢谢。


感谢您的回复。我想知道 Statefuljob 和 @DisallowConcurrentExecution 注释以及将 threadPool.threadCount 设置为 1 之间有什么区别。

重新安排的代码如下...

    Calendar cal = Calendar.getInstance();
    Calendar nextCal = Calendar.getInstance();
    cal.setTimeZone(TimeZone.getTimeZone(obj.getTimeZone()));
    nextCal.setTimeZone(TimeZone.getTimeZone(obj.getTimeZone()));
    Date startTime = null;
    SimpleTrigger trigger = null;

    JobDataMap dataMap = new JobDataMap();
     if (repeatTimeInMillis …
Run Code Online (Sandbox Code Playgroud)

java scheduling quartz-scheduler

6
推荐指数
1
解决办法
6066
查看次数

CGContextClip()使用反向路径

我希望在我的上画剪辑,CGContext但我需要它反过来,即我想要使用剪切路径添加几个矩形,CGContextAddRect()剪辑应该按照我添加到剪辑中的所有矩形的方式完成路径不受任何绘图操作的影响.通常情况下,它只是反过来,即绘图函数绘制到已添加到剪切路径的矩形,并使未添加到剪切路径的区域不受影响.所以我想我需要的只是一种在调用之前反转剪切路径的方法CGContextClip().回到QuickDraw时代,可以通过使用区域然后调用XorRgn()每个矩形轻松完成.但是使用Quartz似乎更复杂.有没有人有一个简单的解决方案来实现这一点,还是我需要自己做所有这些路径反转计算?

macos cocoa macos-carbon quartz-graphics

6
推荐指数
1
解决办法
3762
查看次数

Quartz StatefulJob/non-StatefulJob

你能否向我解释一下在石英中StatefulJob的确切平均值,它与没有StatefulJob的区别?

java quartz-scheduler

6
推荐指数
1
解决办法
9229
查看次数

石英检测节点如何失败

我的生产环境使用quartz 2.1.4运行java调度程序作业.在具有4台机器的weblogic集群服务器上,只有一个调度作业通常在一个集群节点(节点1)执行几个月,但是节点2突然发现节点1在昨晚接管执行作业时失败.实际上,节点1没有错误(根据服务器,网络,数据库,应用程序日志),此事件导致由于2进程并发执行而创建的重复消息.

石英检测节点失败的机制是什么?通过ping扫描,或通过UCP广播心跳ping,还是数据库响应时间等?有什么配置吗?

我已阅读石英配置指南 http://quartz-scheduler.org/documentation/quartz-2.1.x/configuration/ConfigJDBCJobStoreClustering ,但没有答案.

我正在使用JDBCJobstore.在详细检查之后,我们发现有一个数据库(Oracle)语句执行异常长(从5秒到30秒).事件发生在这段时间.你觉得它有关系吗?

我的配置是

`org.quartz.threadPool.threadCount = 10

org.quartz.threadPool.threadPriority = 5

org.quartz.jobStore.misfireThreshold = 10000

org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX`

有人有此信息吗?谢谢.

cluster-computing quartz-scheduler

6
推荐指数
1
解决办法
1340
查看次数