Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在现有NSImage中将线绘制为十字线_Iphone_Macos_Graphics - Fatal编程技术网

Iphone 在现有NSImage中将线绘制为十字线

Iphone 在现有NSImage中将线绘制为十字线,iphone,macos,graphics,Iphone,Macos,Graphics,我在电脑上花了一整天的时间,想弄明白如何在地图上画一些线 现有NSImage 它让它工作,但我的代码使用 CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst); 缺点是我必须知道图像中的位数,因此结果位图的图像质量有时比原始NSImage低 直接在NSImage上画线最简单/最快的方法是什么 如果代码与Mac OSX和iOS都

我在电脑上花了一整天的时间,想弄明白如何在地图上画一些线 现有NSImage

它让它工作,但我的代码使用

CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst);
缺点是我必须知道图像中的位数,因此结果位图的图像质量有时比原始NSImage低

直接在NSImage上画线最简单/最快的方法是什么


如果代码与Mac OSX和iOS都兼容就好了。

iOS上不存在NSImage,因此代码必须不同。在NSImage上绘制是相当容易的

例如:

- (void)drawCrosshair:(NSImage*)img
{
    [img lockFocus];

    NSBezierPath* path = [NSBezierPath bezierPath];

    [path moveToPoint:CGPointMake(90,100)];
    [path lineToPoint:CGPointMake(110,100)];

    [path moveToPoint:CGPointMake(100,90)];
    [path lineToPoint:CGPointMake(100,110)];

    [[NSColor blackColor] set];
    [path stroke];
    [img unlockFocus];
}

iOS上不存在NSImage,因此代码必须不同。在NSImage上绘制是相当容易的

例如:

- (void)drawCrosshair:(NSImage*)img
{
    [img lockFocus];

    NSBezierPath* path = [NSBezierPath bezierPath];

    [path moveToPoint:CGPointMake(90,100)];
    [path lineToPoint:CGPointMake(110,100)];

    [path moveToPoint:CGPointMake(100,90)];
    [path lineToPoint:CGPointMake(100,110)];

    [[NSColor blackColor] set];
    [path stroke];
    [img unlockFocus];
}

你在用这些图像做什么?将其保存到磁盘或仅在屏幕上显示?将其显示在屏幕上然后为什么不使用两种不同的图像视图在原始图像上方显示十字线图像?或者,您可以在自定义视图的
drawRect
中在图像上方绘制十字线。这对你有用吗?不,因为其他原因,我必须直接把它画到图片上。你用这些图片做什么?将其保存到磁盘或仅在屏幕上显示?将其显示在屏幕上然后为什么不使用两种不同的图像视图在原始图像上方显示十字线图像?或者,您可以在自定义视图的
drawRect
中在图像上方绘制十字线。这对你有用吗?不,因为其他原因,我必须直接把它画到图像上。