This article describes how to create "wavy" buttons with text, such as on the front page of my website.

It was written in the early-to-mid 2000s. I'm sure Gimp has changed unrecognizably since then, and none of this advice may be useful anymore.

A high level overview:

1. Create a tileable background image

I created the background image for the front page of my site with Gimp Fractal Explorer.

2. Create a base image for the button

I started by duplicating the background image.

2.1. Type the text

At this point the text is in its own layer, separate from background. (If there is more than one word, as in my example above, you may have put each word in a different layer, so that you could move them separately.) Once you are satisfied that the text is the right size, color, and font, and the words are aligned the way you want them, the text layers will need to be merged with the background layer. After that it will be no longer possible to edit the text. If there is a chance that you may change your mind about the color, size or other attributes of the text, it is better at this point to make a duplicate of this image and work with a duplicate, leaving the layers of the original image unmerged.

Let's merge the text layer(s) with the background layer. In the Layers window, right-click on any layer and select "Merge Visible Layers". In the dialog box that opens, select the radio button "Clip to image" (although in this case probably any of the 3 options will give the same result). So now we only have one layer.

2.2. Draw the guides

The guides are needed so that we could cut out an elipse of exactly the same size and in the same location in each animation frame. (Each frame will be its own separate image. As will become clear shortly, each frame will be created by duplicating this base image. Each duplicate will contain the guides.)

Now that we have the guides, we can remove the elipse selection, because the eliptical shape does not need to be cut out yet. First we need to create the animation frames based on this image.

3. Create animation frames with Waves filter

This is probably not necessary, but I create a separate image for each of the animation frames. I'm pretty sure this can be done by duplicating just the layer with the base image, and applying appropriate operations to each layer. But I just didn't want to think about it. :-) I don't think it is really any more work this way.

I start by duplicating the previous image, the one with guides.