位图图形绘制,如何为线条添加厚度?

时间:2013-04-10 12:38:40

标签: actionscript-3 math graphics graph bitmap

以下函数将通过设置位图上的像素来绘制正弦波。但你怎么画更粗的线?不依赖于Graphics API。

function drawWave(amp:int, freq:int):void
{
    for (var i:int = 0; i < stage.stageWidth; i++)
    {
        var ang:Number = 2 * Math.PI * freq * i/stage.stageWidth;
        bmd.setPixel(i, yaxis - amp * Math.sin(ang), 0xff0000);
    }
}

enter image description here

2 个答案:

答案 0 :(得分:2)

试试这个 - 根据需要调整lineWidth:

function drawWave(amp:int, freq:int):void
{
    var lineWidth:Number = 10;
    var shape:Shape = new Shape();
    var g:Graphics = shape.graphics;
    g.lineStyle(lineWidth, 0xFF0000);
    for (var i:int = 0; i < stage.stageWidth; i++)
    {
        var ang:Number = 2 * Math.PI * freq * i/stage.stageWidth;
        var ypos:Number = yaxis - amp * Math.sin(ang);
        if (i==0)
            g.moveTo(i, ypos);
        else
            g.lineTo(i, ypos);
    }
    bmd.draw(shape);
}

将图形绘制到Shape对象而不是BitmapData - 这样您就可以利用它提供的抗锯齿功能。然后将整个内容复制到BitmapData。

有关调整线条外观的更多选项,请参阅docs for lineStyle(..)

编辑:

如果您坚持只使用BitmapData,可以试试这个:

 bmd.drawRect(new Rectangle(i-WIDTH*0.5, yaxis-amp*Math.sin(ang)-HEIGHT*0.5, WIDTH, HEIGHT), 0xff0000);

根据需要更换WIDTH和HEIGHT,它将绘制矩形而不是单个像素 - 给出更粗的线条,但不是很漂亮我想象

答案 1 :(得分:0)

如果您希望线条较粗,我建议使用圆形的BitmapData而不是使用setPixel,请使用draw()。

当然,您需要根据圆的大小来偏移圆的绘制位置。 - width / 2和-height / 2

相关问题