Actionscript 3 AS3“drawPath”简单形状绘制不正确-为什么?

Actionscript 3 AS3“drawPath”简单形状绘制不正确-为什么?,actionscript-3,flash,graphics,Actionscript 3,Flash,Graphics,我想在ActionScript3中画一个简单的三角形 我使用“Graphics”类的“drawPath”方法 以下是代码片段: stage.stage.quality = StageQuality.LOW; // Change quality to low so no anti-aliasing occurs var trianglePoints:Vector.<Number> = new Vector.<Number>(); trianglePoint

我想在ActionScript3中画一个简单的三角形

我使用“Graphics”类的“drawPath”方法

以下是代码片段:

stage.stage.quality = StageQuality.LOW;         // Change quality to low so no anti-aliasing occurs
var trianglePoints:Vector.<Number> = new Vector.<Number>();

trianglePoints.push(0);     trianglePoints.push(0);     // Coordinate (0,0)
trianglePoints.push(20);    trianglePoints.push(0);     // Coordinate (20,0)
trianglePoints.push(20);    trianglePoints.push(20);    // Coordinate (20,20)
trianglePoints.push(0);     trianglePoints.push(0);     // Coordinate (0,0) - tried with and without this coordinate return

var commands:Vector.<int> = new Vector.<int>(4);
commands.push(1);   // Move to
commands.push(2);   // Line to
commands.push(2);   // Line to
commands.push(2);   // Line to

var drawSprite:Sprite = new Sprite();

drawSprite.graphics.beginFill(0xFFFF0000);          // Color Red
drawSprite.graphics.drawPath(commands, trianglePoints); // Draw the path
drawSprite.graphics.endFill();

var bd:BitmapData = new BitmapData(100, 100, true, 0x0000FF00);
bd.draw(drawSprite);

var pngBytes:ByteArray = PNGEnc.encode(bd);
var fileReference:FileReference = new FileReference();
fileReference.save(pngBytes,"bd_custom_draw.png");

stage.stage.quality = StageQuality.HIGH;
这就是我得到的答案:


我似乎无法得到我需要的结果

试试currentMask.graphics.lineStyle1,0xFFFF0000,1,true;-将线型线条厚度设置为1

尝试currentMask.graphics.lineStyle0.5,0xFFFF0000,1,true;打开像素暗示。0.5像素将使实际线条变细。像素暗示的作用是什么?它应该定位你的路径点,这样你的线将与像素正确对齐。更改为0.5并添加提示仍然产生与第二个图像相同的结果Flash是基于矢量的,位图-是基于像素的,因此在光栅化过程中,你将有一些信息丢失,特别是在锐角上。仍然在我的帖子中获得第二个图像,而不是像那样的完美三角形,图像有21个像素-其他图像不显示,所以我无法比较。@Gone3d右键单击“图像”或“结果”,选择“复制图像位置”,然后打开一个新选项卡/窗口并粘贴URL,应该可以。我使用Firefox,IE可能也可以,其他浏览器也可以,现在就看图片-对不起。因此,如果您担心绘制一组长方体以形成三角形的性能,只需将线型厚度设置为1,并将其从0绘制到19即可。线条样式上的额外像素使其为20。这看起来像是一个黑客,但结果应该是你正在寻找的。我也会测试它在不同的大小和形状,以确保它涵盖所有选项。您可能需要根据所绘制的内容进行调整。祝你好运
currentMask.graphics.lineStyle(1, 0xFFFF0000);