【发布时间】:2025-12-03 15:25:01
【问题描述】:
我无法绘制一像素宽的线条。所有线条都是完全水平或垂直的(我没有画对角线),但它们画得不干净。看起来它正在以降低的 alpha 跨越两个像素。毫无疑问是由于抗锯齿。我搜索了文档和论坛,发现有一个声明说“……画一个像素宽的水平和垂直线没有问题……”但我不知道到底是怎么回事。欢迎任何指点。
绘制代码很简单:
else if ([[value entity].name isEqualToString:@"RTLine"]) {
CGContextSetRGBStrokeColor(ctx, 0, 0, 0, 1);
CGContextSetLineWidth(ctx, [[value valueForKey:@"thickness"] doubleValue]);
CGContextMoveToPoint(ctx, [[value valueForKey:@"beginDrawLocationX"] doubleValue],
[[value valueForKey:@"beginDrawLocationY"] doubleValue]);
CGContextAddLineToPoint(ctx, [[value valueForKey:@"endDrawLocationX"] doubleValue],
[[value valueForKey:@"endDrawLocationY"] doubleValue]);
CGContextStrokePath(ctx);
}
在上面,'thickness' 等于 1。我使用 doubleValue 而不是 floatValue 进行从 int 的转换,以防 float 将值混合为不完全为 1 的值 - 它不是。
【问题讨论】:
标签: drawing quartz-graphics line