TransWikia.com

Giving a custom style a colored gradient background

Mathematica Asked by Unbelievable on March 5, 2021

In Mathematica, customizing Sections, Subsections, Titles and so on, can be done with Format > Style > …. Changing the background color of a style is one of the things you can do. Here is an example where I have colored the background orange:

enter image description here

But I want to change the background to show a color gradient. I mean, instead of having the same orange in all of the background, there should be a gradient so the orange fades from top to bottom. Gradient styles will be found in Palettes > Color Schemes. But I can’t get it to work for changing the color of a cell background.

3 Answers

I'm not sure how exactly to integrate this with a stylesheet background, but here is a way to achieve gradients using Graphics:

Overlay@{
  Graphics[
   Raster@{List@@@Table[Blend["AvocadoColors",i],{i,0,1,.005}]},
   AspectRatio->1/2,
   ImageSize->Full],
  Graphics[
   Text@Style["Gradient!",FontSize->[email protected]],
   AspectRatio->1/2,
   ImageSize->Full]}

enter image description here

EDIT

I stumbled on a different way to do this that would be easier for simple layouts (tidied up with kguler's suggestion):

Graphics[{
  Polygon[
    {{0, 0}, {1, 0}, {1, 1}, {0, 1}}, 
    VertexColors -> {Yellow, Yellow, Green, Green}], 
  Text[
    Style["Gradient!", FontSize -> [email protected]], 
    Scaled[{.5, .5}]]}, ImageSize -> Full, AspectRatio -> 1/2]

enter image description here

Correct answer by mfvonh on March 5, 2021

In versions 11.1+, you can use LinearGradientImage and add the text as Epilog:

Show[LinearGradientImage["BlueGreenYellow", 6 {100, 50}], 
 Epilog -> {Text[Style["Gradient!", FontFamily -> "Old English Text MT",  
     FontSize -> [email protected]], Scaled[{.5, .5}]]}]

enter image description here

Replace "BlueGreenYellow" with {Black, Red, Orange, White} to get

enter image description here

Update: In versions 12.2.0+, gradient filling is available as a graphics directive:

Graphics[{LinearGradientFilling["BlueGreenYellow"], Rectangle[],
  Text[Style["Gradient!", FontSize -> [email protected]], Scaled[{.5, .5}]]}, 
 AspectRatio -> 1/2] 

enter image description here

Answered by kglr on March 5, 2021

The easy way to do this is to use Panel:

Panel[
 Style["asdasd", FontSize -> 100, White],
 Appearance -> Rasterize@LinearGradientImage["BlueGreenYellow", 6 {100, 50}],
 ImageSize -> {500, 100}
 ]

enter image description here

This Panel content can be messed with however you like. You can also make it so inside a certain Cell every Panel has the same Appearance by setting it at the style environment level. This works best if you use the BaseStyle option to Panel, since that lets you create targeted environments, but I'm just gonna show it like this:

Style[
 Panel[
  Style["asdasd", FontSize -> 100, White],
  ImageSize -> {500, 100}
  ],
 PanelBoxOptions -> {
   Appearance -> Rasterize@LinearGradientImage["BlueGreenYellow", 6 {100, 50}]
   }
 ]

same image

Answered by b3m2a1 on March 5, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP