En principio necesita un Canvas en blanco donde dibujar, que puede ser el de un TImage, Un Bitmap de textura tan grande como el texto que queramos poner y un texto.
procedure DrawTextTexture(Text: String; Canvas: TCanvas; X, Y: integer; Texture: TBitmap); var Bitmap: TBitmap; begin Bitmap:= TBitmap.Create; SetBkMode(Canvas.Handle, TRANSPARENT); Canvas.TextOut(20, 20, PCHAR(Text)); // Invierto la imagen del texto Canvas.CopyMode:= cmDstInvert; Canvas.Draw(0,0,Bitmap); // AND con la textura Canvas.CopyMode:= cmSrcPaint; Canvas.Draw(0,0,Texture); Bitmap.Free; end;
La forma de usarlo:
procedure TForm1.Button3Click(Sender: TObject); var Texture: TBitmap; begin // Tomamos una fuente lo suficientemente grande Image1.Canvas.Font.Name:= 'Arial Black'; Image1.Canvas.Font.Size:= 90; // Cargamos la Textura Texture:= TBitmap.Create; Texture.LoadFromFile('madera.bmp'); // Dibujamos el texto con su textura de relleno DrawTextTexture('TEXTO', Image1.Canvas, 20, 20, Texture); Texture.Free; end;
El resultado será algo como esto:

Saludos.