【问题标题】:Draw lines as a cross hair in an existing NSImage在现有的 NSImage 中将线条绘制为十字准线
【发布时间】:2013-06-16 19:09:07
【问题描述】:

我整天都在电脑上想弄清楚如何在一个 现有的 NSImage。

它可以工作,但我使用的代码

CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst);

缺点是我必须知道图像中的位数,所以结果位图的图像质量有时确实低于原始 NSImage。

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

如果代码同时兼容 Mac OSX 和 iOS 那就太好了。

【问题讨论】:

  • 你在用这些图片做什么?将它们保存到磁盘或只是在屏幕上显示它们?
  • 在屏幕上显示它们
  • 那么为什么不使用两个不同的图像视图在原始图像上方简单地显示十字线图像呢?或者,您可以在自定义视图的drawRect 中在图像上方绘制十字准线。这对你有用吗?
  • 不,我必须将它直接绘制到图像上。

标签: iphone macos graphics


【解决方案1】:

NSImage 在 iOS 上不存在,因此代码必须不同。在 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];
}

【讨论】:

    猜你喜欢
    • 2020-08-25
    • 2011-10-22
    • 2013-07-20
    • 1970-01-01
    • 2020-04-09
    • 2014-05-15
    • 2014-06-14
    • 1970-01-01
    • 2022-11-10
    相关资源
    最近更新 更多