Chrome使用了哪种抗锯齿线绘制算法?

时间:2017-09-01 13:42:13

标签: javascript html5 algorithm google-chrome canvas

我正在导入大量原始绘图数据(笔画)并将其转换为图像。到目前为止,我使用了基本的HTML5 Canvas,效果很好。但我想自己实现线条绘制算法,因为它省去了很多麻烦。

所以我实现了Xiaolin Wu's line algorithm,但是当我将它与之前使用Canvas的结果进行比较时,它看起来并不是很好:

左5列:Xiaolin Wu的行算法,右5列:HTML5 Canvas(最新版Chrome)算法

那么他们使用的算法是什么?源代码可用吗?我只需要绘制单行的算法。

1 个答案:

答案 0 :(得分:1)

Google Chrome由开源的Chromium提供支持。

主要的Chromium项目位于https://www.chromium.org/

源代码位于https://chromium.googlesource.com/

下一步是浏览一下。他们正在使用库Skia绘制哪个也是开源。你可以在你的项目中使用它,你应该很好。

Demo

void draw(SkCanvas* canvas) {
    canvas->drawColor(SK_ColorWHITE);

    SkPaint paint;
    paint.setStyle(SkPaint::kStroke_Style);
    paint.setStrokeWidth(8);
    paint.setColor(0xff1f78b4);
    paint.setAntiAlias(true);
    paint.setStrokeCap(SkPaint::kRound_Cap);

    SkPath path;
    path.moveTo(10, 10);
    path.quadTo(256, 64, 128, 128);
    path.quadTo(10, 192, 250, 250);
    canvas->drawPath(path, paint);
}

demo