Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Repeated pattern in a Raphael element

Is there a way to have a repeated pattern as the background to a Raphael element?

In particular, can I overlay a semi-transparent .png on top of the fill colour? (or an alternative might be to have a clip-path (not rect) for an image)

like image 440
wheresrhys Avatar asked Apr 21 '26 17:04

wheresrhys


1 Answers

Here's the SVG solution to having a repeater pattern as background. You can work your way from there.

First of all create a pattern and in that pattern put the image you want to repeat. Give an ID to that pattern and use that ID as an IRI in the fill value of your shape that needs tiling.

To also have a default background you only need to have another identical shape behind it with the background you'd like.

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg viewBox="0 0 800 400" 
    version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  <defs>
    <pattern id="myTile" patternUnits="userSpaceOnUse"
             x="0" y="0" width="20" height="20"
             viewBox="0 0 20 20" >
      <image x="0" y="0" width="20px" height="20px" xlink:href="tile.png" />
    </pattern> 
  </defs>

  <rect x="0" y="0" fill="Red" width="800" height="400">
  </rect>
  <ellipse fill="url(#myTile)" stroke="black" stroke-width="5"  
        cx="400" cy="200" rx="350" ry="150" />
</svg>

Warning: Running the example above may hurt your eyes.

like image 89
Alin Purcaru Avatar answered Apr 24 '26 06:04

Alin Purcaru



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!