2

将以下代码用于 Flex 4 中的梯形类:

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" width="35" height="140">
    <s:Path data="m 0 34
            l 35 -34
            v 140
            l -35 -34">
        <s:stroke>
            <s:SolidColorStroke weight="1" color="0x000000"/>
        </s:stroke>
        <s:fill>
            <s:SolidColor color="0xCCCCCC"/>
        </s:fill>
    </s:Path>
</s:Group>

这将产生以下图像:

在此处输入图像描述

我可以看到顶部和底部的对角线边缘周围的笔画元素,但看不到左右垂直边缘的笔划元素。抱歉,我对在 Flex 中制作这样的自定义形状非常陌生。这里有什么不同?谢谢!

编辑:

我还没有时间查看其中一条评论。但是,我进行了一些实验:

1:将数据更改为:

"m 1 34
l 33 -34
v 140
l -33 -34"

产生了这个结果:

在此处输入图像描述

2:将数据更改为:

"m 1 34
l 33 -34
v 140
l -20 -34"

产生了这个结果:

在此处输入图像描述

在这两种情况下,右边缘都前进并出现,但左边缘没有。

编辑:

值得一提的是,即使在 Flash Builder 4.6 的设计器选项卡中,左边缘也缺失了。

4

2 回答 2

3

假设容器组正在剪辑其内容,@Kodiaks 的回答部分正确。然而,宽度应该是 36 的原因并不是他所描述的,而是您必须考虑笔画宽度的事实。
描边是以其中心在形状的真实边框上绘制的,因此将在形状内部 0.5px 和外部 0.5px 绘制 1px 边框。在这种特殊情况下,宽度变为 36px (35 + 2*0.5)。
您可以通过将边框粗细设置为例如 4px 来验证这是不是真正的原因;如果你不想剪裁它,你会看到你需要一个 39px 的容器。

此外,如果您不希望笔画在左侧被剪裁,则必须将形状画得更向右一点(准确地说是笔画重量的一半)。

然后还有一个小错误:你没有关闭形状,导致没有绘制左侧边框。只需Z在末尾添加一个,data形状就会关闭。

所以这是边框粗细为“4”的形状的最终结果:

<s:Group width="39" height="140">
    <s:Path data="m 2 34
        l 35 -32
        v 140
        l -35 -34 z">
        <s:stroke>
            <s:SolidColorStroke weight="4" color="0x000000" />
        </s:stroke>
        <s:fill>
            <s:SolidColor color="0xCCCCCC"/>
        </s:fill>
    </s:Path>
</s:Group>

注意:如您所见,我还对高度进行了一些调整;否则角落也会被剪掉。

于 2013-07-08T16:06:00.750 回答
2

如果您的形状从 0 开始到 35,其宽度不是 35 而是 36,则父组的宽度不足以显示边框笔触。

于 2013-07-08T14:58:40.383 回答