如何在反复原生的情况下屏蔽SVG六边形的用户图像

时间:2018-05-30 05:41:12

标签: javascript css reactjs react-native

我正在努力与六角形状的反应本地人可以有一些想法如何使用svg反应原生或任何替代方式吗?

  • 使用js
  • 创建形状
  • 六边形图像切口
  • 屏蔽图像[在此输入图像描述] [1]

我正在尝试下面这张图片。 https://i.stack.imgur.com/MLDFl.jpg

这是我的代码:

render(){         回来(

        <Svg
            height="300"
            width="300"
            viewBox="0 0 860 860"
        >
            <Defs>
                <ClipPath id="clip">
                    <Polygon
                        strokeWidth="2"
                        stroke="#979797"
                        strokeDasharray='8,8'
                        strokeLinecap='butt'
                        fill="rgba(0, 0, 0, 0.5)"
                        points="258.5,223.999  130.5,298 2.5,224 2.5,76 130.5,2 258.5,76 " />
                </ClipPath>
            </Defs>

            <Image
                x="0%"
                y="0%"
                width="100%"
                height="100%"
                preserveAspectRatio="xMidYMid slice"
                opacity="0.5"
                href={require('./assets/Image.jpg')}
                clipPath="url(#clip)"
            />

        </Svg>


    );
}

1 个答案:

答案 0 :(得分:2)

可以使用我的react-native-image-filter-kit模块创建这种图像:

import { Image } from 'react-native'
import { DstATopComposition } from 'react-native-image-filter-kit'

const style = { width: 320, height: 320 }

const masked = (
  <DstATopComposition
    dstImage={
      <Image
        style={style}
        source={{ uri: 'https://i.stack.imgur.com/MLDFl.jpg' }}
      />
    }
    srcImage={
      <Image
        style={style}
        source={{ uri: 'http://www.myiconfinder.com/uploads/iconsets/256-256-53d5151ca4f467ed9951f85024881c85.png' }}
      />
    }
  />
) 

result

请注意,目前不支持形状生成,因此您需要使用其他图像进行遮罩。