在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的Designer选项卡中,也缺少左边缘。
答案 0 :(得分:3)
假设容器组正在剪切其内容,@ Kodiaks的答案部分正确。然而宽度应该是36的原因并不是他所描述的,而是你必须考虑到行程宽度的事实。
笔划的中心位于形状的实际边界上,因此1px边框将在形状内绘制0.5px,在外部绘制0.5px。在这种特殊情况下,宽度因此变为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>
注意:正如你所看到的,我也对高度做了一些调整;否则角落也会被剪掉。
答案 1 :(得分:2)
如果你的形状从0开始并且变为35,它的宽度不是35而是36,则父组的宽度不足以显示边框笔划。