First, familiarize yourself with the demonstration program that comes with the graphics LCD library.

Drawing an LCARS display starts out with one large Rounded Rectangle on the screen.  To get the color correct, you can choose the proper RGB color combinations from this list:  https://www.thelcars.com/colors.php


Use the Hex value (FF7700) in the code, for example, to get the correct orange Color.

The LCARS Demo code has these colors defined:

#define lcbrown tft.color565(234, 150, 46)
#define lcgold tft.color565(0xff, 0xaa, 0)
#define lcgray tft.color565(78, 75, 71)
#define lcltblue tft.color565(0xbb, 0xbb, 0xff)
#define lcltgreen tft.color565(0x99, 0xaa, 0x66
#define lcgreen tft.color565(0x0, 0xbb, 0)
#define lcwhite tft.color565(0xfe, 0xeb, 0xde)
#define lcred tft.color565(0xee, 0, 0)
#define lcblack tft.color565(0, 0, 0
#define lcltpurple tft.color565(0xdd, 0x88, 0xdd)
#define lcblue tft.color565(0xa, 0x4b, 0xee)

The Adafruit library has functions to draw rectangles with Round or Square corners.

The X,Y Orientation of the screen is shown below...

First the code clears the screen with a black background.

 tft.setRotation(3); // Set the rotations to 180°
 tft.fillScreen(ILI9341_BLACK); //Fill the screen with all black.

Next fill most of the screen with a rounded rectangle.  The rect goes off the screen so the right side of the screen does NOT have rounded corner, only the left side of the screen will.

  tft.fillRoundRect(0, 0, 348, 240, 32, lcgold);

(The LCD looks better IRL than the photos... : ) 

Now to get an LCARS looking start, draw a black rectangle inside the gold rectangle above...

  tft.fillRoundRect(60, 16, 340, 210, 12, lcblack);

Now we need to tell the world what critical information this is displaying.  Typically that is a few words in the upper right gold bar.  Let's remove some of the gold and write some text in that area..

  tft.fillRect(245, 0, 55, 30, lcblack); //create a small black background for word that follows
  tft.setTextSize(2); //set text size (Unfortunately, no LCARS Font here..)
  tft.setTextColor(lcltblue);  //set the text color
  tft.setCursor(250, 2); //set the text location
  tft.println("WARP"); //write the label

Next, we want the left wide Gold area to be split into buttons.  This is simply done by drawing multiple lines spaced 20 pixels apart.

for (int n = 60; n <= 180; n+=20){
    tft.drawLine(0, n, 60, n, lcblack);
  }

Next lets make some of the button a different color... We can rewrite the loop above to draw the line and then draw a square below that line using one of the colors.

  uint16_t randColor[6] = {lcred,lcgreen,lcgray,lcbrown,lcblue,lcwhite};
  
  for (int n = 60; n <= 180; n+=20){
    tft.drawLine(0, n, 60, n, lcblack);
    tft.fillRect(0, n+1, 60, 20, randColor[random(0,5)]);
  }

Should we add some words to those buttons?

uint16_t randColor[6] = {lcred,lcgreen,lcgray,lcbrown,lcblue,lcwhite};
  String lcwords[7] = {"NOMINAL","PRESSURE","SPEED","MATTER","ANTIMATT","74-2344","34-6979"};
  
  int w = 0;
  randomSeed(analogRead(A0));
  tft.setTextSize(1);
  tft.setTextColor(lcwhite);  
  for (int n = 60; n <= 180; n+=20){
    tft.drawLine(0, n, 60, n, lcblack);
    tft.fillRect(0, n+1, 60, 20, randColor[random(0,5)]);
    tft.setCursor(6, n + 5);
    tft.println(lcwords[w++]);
  }

Finally, lets add the Warp Core!

  for (int n = 40; n < 108; n+= 22){
    tft.fillRoundRect(120, n, 60, 20, 4, lcblue);
  }
  tft.fillRoundRect(110, 106, 80, 20, 4, lcblue);
  tft.fillRoundRect(136, 112, 30, 5, 4, lcwhite);
  
  for (int n = 128; n < 188; n+= 22){
    tft.fillRoundRect(120, n, 60, 20, 4, lcblue);
  }

 From here, I'm sure you are ready to finish this screen or create your own LCARS Display!

Thanks!