Formatowanie tekstu prezentacji w PHP

Przegląd

Ten artykuł pokazuje, jak formatować tekst w prezentacjach PowerPoint i OpenDocument przy użyciu Aspose.Slides dla PHP za pośrednictwem Java. Omówiono podświetlanie, kolory tła, przezroczystość, odstępy między znakami, właściwości czcionki, obrót, odstępy akapitów, zachowanie autofit, kotwiczenie tekstu, tabulatory i ustawienia języka.

W poniższych przykładach użyjemy pliku o nazwie “sample.pptx”, który zawiera pojedyncze pole tekstowe na pierwszym slajdzie z następującym tekstem:

Przykładowy tekst

Podświetlanie tekstu

Użyj metody TextFrame::highlightText, gdy potrzebujesz podświetlić tekst pasujący do określonego wzorca w ramce tekstowej. Metoda stosuje kolor podświetlenia do pasujących fragmentów tekstu i może być użyta z TextHighlightingOptions, aby kontrolować sposób wyszukiwania, na przykład aby dopasować tylko całe słowa.

Poniższy przykład kodu podświetla wszystkie wystąpienia znaków “try” i następnie podświetla tylko pełne słowo “to”.

$presentation = new Presentation("sample.pptx");
try {
    // Pobierz pierwszy kształt z pierwszego slajdu.
    $shape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    $lightBlue = new Java("java.awt.Color", 173, 216, 230);
    $violet = new Java("java.awt.Color", 238, 130, 238);

    // Podświetl słowo "try" w kształcie.
    $shape->getTextFrame()->highlightText("try", $lightBlue);

    $searchOptions = new TextHighlightingOptions();
    $searchOptions->setWholeWordsOnly(true);

    // Podświetl słowo "to" w kształcie.
    $shape->getTextFrame()->highlightText("to", $violet, $searchOptions);

    $presentation->save("highlighted_text.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Wynik:

Podświetlony tekst

Podświetlanie tekstu przy użyciu wyrażeń regularnych

Metoda TextFrame::highlightRegex podświetla dopasowania tekstu znalezione przez wyrażenie regularne.

Poniższy przykład kodu podświetla wszystkie słowa zawierające siedem lub więcej znaków:

$presentation = new Presentation("sample.pptx");
try {
    $shape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);

    // Podświetl wszystkie słowa o siedmiu lub więcej znakach.
    $shape->getTextFrame()->highlightRegex("\\b[^\\s]{7,}\\b", java("java.awt.Color")->YELLOW, null);

    $presentation->save("highlighted_text_using_regex.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Wynik:

Podświetlony tekst przy użyciu wyrażenia regularnego

Ustawienie koloru tła tekstu

Użyj domyślnego formatu części w ParagraphFormat, aby ustawić domyślny kolor podświetlenia dla akapitu, lub użyj PortionFormat dla pojedynczych części tekstu.

Poniższy przykład kodu pokazuje, jak ustawić kolor tła dla całego akapitu:

$presentation = new Presentation("sample.pptx");
try {
    $autoShape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    $paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);

    // Ustaw kolor podświetlenia dla całego akapitu.
    $paragraph->getParagraphFormat()->getDefaultPortionFormat()->getHighlightColor()->setColor(java("java.awt.Color")->LIGHT_GRAY);

    $presentation->save("gray_paragraph.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Wynik:

Szary akapit

Poniższy przykład kodu demonstruje, jak ustawić kolor tła dla części tekstu z pogrubioną czcionką:

$presentation = new Presentation("sample.pptx");
try {
    $autoShape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    $paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);

    $portionCount = java_values($paragraph->getPortions()->getCount());
    for ($portionIndex = 0; $portionIndex < $portionCount; $portionIndex++) {
        $portion = $paragraph->getPortions()->get_Item($portionIndex);
        if (java_values($portion->getPortionFormat()->getEffective()->getFontBold()) === NullableBool::True) {
            // Ustaw kolor podświetlenia dla części tekstu.
            $portion->getPortionFormat()->getHighlightColor()->setColor(java("java.awt.Color")->LIGHT_GRAY);
        }
    }

    $presentation->save("gray_text_portions.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Wynik:

Szare części tekstu

Wyrównywanie akapitów tekstu

Użyj metody ParagraphFormat::setAlignment, aby ustawić wyrównanie akapitu w ramce tekstowej. Wartość może być wyśrodkowana, wyrównana do lewej, do prawej, justowana itp.

Poniższy przykład kodu pokazuje, jak wyrównać akapit do środka:

$presentation = new Presentation("sample.pptx");
try {
    $autoShape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    $paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);

    // Ustaw wyrównanie akapitu do środka.
    $paragraph->getParagraphFormat()->setAlignment(TextAlignment::Center);

    $presentation->save("aligned_paragraph.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Wynik:

Wyrównany akapit

Ustawienie przezroczystości tekstu

Przezroczystość tekstu jest kontrolowana przez składnik alfa koloru przypisanego do formatu wypełnienia PortionFormat. W poniższych przykładach alpha = 50 jest wartością kanału alfa ARGB w skali 0‑255, a nie procentem przezroczystości.

Poniższy przykład kodu pokazuje, jak zastosować przezroczystość do całego akapitu:

$alpha = 50;

$presentation = new Presentation("sample.pptx");
try {
    $autoShape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    $paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);
    $fillFormat = $paragraph->getParagraphFormat()->getDefaultPortionFormat()->getFillFormat();

    // Ustaw kolor wypełnienia tekstu na kolor przezroczysty.
    $fillFormat->setFillType(FillType::Solid);
    $fillFormat->getSolidFillColor()->setColor(new Java("java.awt.Color", 0, 0, 0, $alpha));

    $presentation->save("transparent_paragraph.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Wynik:

Przezroczysty akapit

Poniższy przykład kodu pokazuje, jak zastosować przezroczystość do części tekstu z pogrubioną czcionką:

$alpha = 50;

$presentation = new Presentation("sample.pptx");
try {
    $autoShape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    $paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);

    $portionCount = java_values($paragraph->getPortions()->getCount());
    for ($portionIndex = 0; $portionIndex < $portionCount; $portionIndex++) {
        $portion = $paragraph->getPortions()->get_Item($portionIndex);
        if (java_values($portion->getPortionFormat()->getEffective()->getFontBold()) === NullableBool::True) {
            // Ustaw przezroczystość części tekstu.
            $fillFormat = $portion->getPortionFormat()->getFillFormat();
            $fillFormat->setFillType(FillType::Solid);
            $fillFormat->getSolidFillColor()->setColor(new Java("java.awt.Color", 0, 0, 0, $alpha));
        }
    }

    $presentation->save("transparent_text_portions.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Wynik:

Przezroczyste części tekstu

Ustawienie odstępu między znakami w tekście

Użyj metody BasePortionFormat::setSpacing, aby rozszerzyć lub zmniejszyć odstęp między znakami w polu tekstowym.

Poniższy kod PHP pokazuje, jak rozszerzyć odstęp między znakami w całym akapicie:

$presentation = new Presentation("sample.pptx");
try {
    $autoShape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    $paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);

    // Uwaga: użyj wartości ujemnych, aby zmniejszyć odstęp między znakami.
    $paragraph->getParagraphFormat()->getDefaultPortionFormat()->setSpacing(3); // Rozszerz odstęp między znakami.

    $presentation->save("character_spacing_in_paragraph.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Wynik:

Odstęp między znakami w akapicie

Poniższy przykład kodu pokazuje, jak rozszerzyć odstęp między znakami w częściach tekstu z pogrubioną czcionką:

$presentation = new Presentation("sample.pptx");
try {
    $autoShape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    $paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);

    $portionCount = java_values($paragraph->getPortions()->getCount());
    for ($portionIndex = 0; $portionIndex < $portionCount; $portionIndex++) {
        $portion = $paragraph->getPortions()->get_Item($portionIndex);
        if (java_values($portion->getPortionFormat()->getEffective()->getFontBold()) === NullableBool::True) {
            // Uwaga: użyj wartości ujemnych, aby zmniejszyć odstęp między znakami.
            $portion->getPortionFormat()->setSpacing(3); // Rozszerz odstęp między znakami.
        }
    }

    $presentation->save("character_spacing_in_text_portions.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Wynik:

Odstęp między znakami w częściach tekstu

Wyłączenie kerningu dla określonych czcionek

W niektórych przypadkach tekst renderowany przez Aspose.Slides może wyglądać nieco ściślej niż ten sam tekst wyświetlany w PowerPoint. Może się tak zdarzyć, ponieważ PowerPoint może ignorować dane kerningu dla niektórych czcionek, nawet jeśli czcionka zawiera prawidłowe informacje o kerningu i kerning jest włączony w ustawieniach PowerPoint.

Aby uzyskać wynik bardziej zbliżony do PowerPoint w takich sytuacjach, możesz wyłączyć kerning dla części tekstu używających dotkniętej czcionki. Ustaw metodę BasePortionFormat::setKerningMinimalSize na wartość znacząco większą niż rzeczywisty rozmiar czcionki:

$presentation = new Presentation("presentation.pptx");
try {
    $autoShape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    $targetFont = "Roboto";

    $paragraphCount = java_values($autoShape->getTextFrame()->getParagraphs()->getCount());
    for ($paragraphIndex = 0; $paragraphIndex < $paragraphCount; $paragraphIndex++) {
        $paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item($paragraphIndex);
        $portionCount = java_values($paragraph->getPortions()->getCount());
        for ($portionIndex = 0; $portionIndex < $portionCount; $portionIndex++) {
            $portion = $paragraph->getPortions()->get_Item($portionIndex);
            $portionFormat = $portion->getPortionFormat();
            $latinFont = $portionFormat->getLatinFont();
            $eastAsianFont = $portionFormat->getEastAsianFont();
            $complexScriptFont = $portionFormat->getComplexScriptFont();

            if ((!java_is_null($latinFont) && $latinFont->getFontName() == $targetFont) ||
                (!java_is_null($eastAsianFont) && $eastAsianFont->getFontName() == $targetFont) ||
                (!java_is_null($complexScriptFont) && $complexScriptFont->getFontName() == $targetFont)) {
                $portionFormat->setKerningMinimalSize(100);
            }
        }
    }

    $presentation->save("output.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

To ustawienie zapobiega stosowaniu kerningu do pasujących części tekstu i może pomóc wyrównać renderowanie Aspose.Slides z wyjściem wizualnym PowerPoint dla czcionek dotkniętych tym specyficznym zachowaniem PowerPoint.

Zarządzanie właściwościami czcionki tekstu

Właściwości czcionki można ustawić na poziomie akapitu poprzez domyślny format części w ParagraphFormat, lub na poszczególnych częściach poprzez PortionFormat.

Poniższy kod ustawia czcionkę i styl tekstu dla całego akapitu: stosuje rozmiar czcionki, pogrubienie, kursywę, kropkowane podkreślenie oraz czcionkę Times New Roman do wszystkich części w akapicie.

$presentation = new Presentation("sample.pptx");
try {
    $autoShape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    $paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);
    $defaultPortionFormat = $paragraph->getParagraphFormat()->getDefaultPortionFormat();

    // Ustaw właściwości czcionki dla akapitu.
    $defaultPortionFormat->setFontHeight(12);
    $defaultPortionFormat->setFontBold(NullableBool::True);
    $defaultPortionFormat->setFontItalic(NullableBool::True);
    $defaultPortionFormat->setFontUnderline(TextUnderlineType::Dotted);
    $defaultPortionFormat->setLatinFont(new FontData("Times New Roman"));

    $presentation->save("font_properties_for_paragraph.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Wynik:

Właściwości czcionki dla akapitu

Poniższy przykład kodu stosuje podobne właściwości do części tekstu z pogrubioną czcionką:

$presentation = new Presentation("sample.pptx");
try {
    $autoShape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    $paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);

    $portionCount = java_values($paragraph->getPortions()->getCount());
    for ($portionIndex = 0; $portionIndex < $portionCount; $portionIndex++) {
        $portion = $paragraph->getPortions()->get_Item($portionIndex);
        if (java_values($portion->getPortionFormat()->getEffective()->getFontBold()) === NullableBool::True) {
            // Ustaw właściwości czcionki dla części tekstu.
            $portionFormat = $portion->getPortionFormat();
            $portionFormat->setFontHeight(13);
            $portionFormat->setFontItalic(NullableBool::True);
            $portionFormat->setFontUnderline(TextUnderlineType::Dotted);
            $portionFormat->setLatinFont(new FontData("Times New Roman"));
        }
    }

    $presentation->save("font_properties_for_text_portions.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Wynik:

Właściwości czcionki dla części tekstu

Ustawienie obrotu tekstu

Użyj metody TextFrameFormat::setTextVerticalType, aby ustawić predefiniowaną orientację tekstu wewnątrz kształtu.

Poniższy przykład kodu ustawia orientację tekstu w kształcie na Vertical270, co obraca tekst o 90 stopni przeciwnie do ruchu wskazówek zegara:

$presentation = new Presentation("sample.pptx");
try {
    $autoShape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);

    $autoShape->getTextFrame()->getTextFrameFormat()->setTextVerticalType(TextVerticalType::Vertical270);

    $presentation->save("text_rotation.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Wynik:

Obrót tekstu

Ustawienie własnego obrotu dla ramek tekstowych

Użyj metody TextFrameFormat::setRotationAngle, aby ustawić własny kąt obrotu dla TextFrame.

Poniższy przykład kodu obraca ramkę tekstową o 3 stopnie zgodnie z ruchem wskazówek zegara w obrębie kształtu:

$presentation = new Presentation("sample.pptx");
try {
    $autoShape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);

    $autoShape->getTextFrame()->getTextFrameFormat()->setRotationAngle(3);

    $presentation->save("custom_text_rotation.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Wynik:

Własny obrót tekstu

Ustawienie odstępu między wierszami w akapitach

Aspose.Slides udostępnia metody ParagraphFormat::setSpaceAfter, ParagraphFormat::setSpaceBefore oraz ParagraphFormat::setSpaceWithin, aby kontrolować odstępy akapitów. Metody te stosuje się w następujący sposób:

  • Użyj wartości dodatniej, aby określić odstęp jako procent wysokości wiersza.
  • Użyj wartości ujemnej, aby określić odstęp w punktach.

Poniższy przykład kodu pokazuje, jak określić odstęp wierszy w akapicie:

$presentation = new Presentation("sample.pptx");
try {
    $autoShape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    $paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);

    $paragraph->getParagraphFormat()->setSpaceWithin(200);

    $presentation->save("line_spacing.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Wynik:

Odstęp wierszy w akapicie

Ustawienie typu autofitu dla ramek tekstowych

Metoda TextFrameFormat::setAutofitType określa, jak tekst zachowuje się, gdy przekracza granice swojego kontenera. Użyj jej, aby kontrolować, czy tekst ma się zmniejszać, przelatywać poza obszar albo automatycznie zmieniać rozmiar kształtu.

$presentation = new Presentation("sample.pptx");
try {
    $autoShape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);

    $autoShape->getTextFrame()->getTextFrameFormat()->setAutofitType(TextAutofitType::Shape);

    $presentation->save("autofit_type.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Ustawienie kotwicy dla ramek tekstowych

Metoda TextFrameFormat::setAnchoringType definiuje, jak tekst jest rozmieszczony pionowo wewnątrz kształtu, na przykład u góry, w środku lub na dole.

$presentation = new Presentation("sample.pptx");
try {
    $autoShape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);

    $autoShape->getTextFrame()->getTextFrameFormat()->setAnchoringType(TextAnchorType::Bottom);

    $presentation->save("text_anchor.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Ustawienie tabulacji tekstu

Użyj metody ParagraphFormat::setDefaultTabSize oraz jej kolekcji tabulacji, aby skonfigurować tabulatory w akapicie.

$presentation = new Presentation("sample.pptx");
try {
    $autoShape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    $paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);

    $paragraph->getParagraphFormat()->setDefaultTabSize(100);
    $paragraph->getParagraphFormat()->getTabs()->add(30, TabAlignment::Left);

    $presentation->save("paragraph_tabs.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Wynik:

Tabulatory w akapicie

Ustawienie języka korekty

Aspose.Slides udostępnia metodę BasePortionFormat::setLanguageId, która pozwala ustawić język korekty dla części tekstu. Język korekty określa język używany do sprawdzania pisowni i gramatyki w PowerPoint.

Poniższy przykład kodu pokazuje, jak ustawić język korekty dla części tekstu:

$presentation = new Presentation("presentation.pptx");
try {
    $autoShape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);

    $paragraph = $autoShape->getTextFrame()->getParagraphs()->get_Item(0);
    $paragraph->getPortions()->clear();

    $font = new FontData("SimSun");

    $textPortion = new Portion();
    $textPortion->getPortionFormat()->setComplexScriptFont($font);
    $textPortion->getPortionFormat()->setEastAsianFont($font);
    $textPortion->getPortionFormat()->setLatinFont($font);

    // Ustaw identyfikator języka korekty.
    $textPortion->getPortionFormat()->setLanguageId("zh-CN");

    $textPortion->setText("1.");
    $paragraph->getPortions()->add($textPortion);

    $presentation->save("proofing_language.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Ustawienie języka domyślnego

Użyj metody LoadOptions::setDefaultTextLanguage, aby zdefiniować domyślny język dla tekstu tworzonego podczas ładowania lub tworzenia prezentacji.

$loadOptions = new LoadOptions();
$loadOptions->setDefaultTextLanguage("en-US");

$presentation = new Presentation($loadOptions);
try {
    $slide = $presentation->getSlides()->get_Item(0);

    // Dodaj nowy prostokątny kształt z tekstem.
    $shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 20, 20, 150, 50);
    $shape->getTextFrame()->setText("Sample text");

    // Sprawdź język pierwszej części tekstu.
    $portion = $shape->getTextFrame()->getParagraphs()->get_Item(0)->getPortions()->get_Item(0);
    echo $portion->getPortionFormat()->getLanguageId();
} finally {
    $presentation->dispose();
}

Ustawienie domyślnego stylu tekstu

Aby zastosować domyślne formatowanie tekstu na poziomie prezentacji, użyj domyślnego stylu tekstu obiektu Presentation.

Poniższy przykład kodu pokazuje, jak ustawić domyślną pogrubioną czcionkę o rozmiarze 14 pt dla całego tekstu we wszystkich slajdach nowej prezentacji.

$presentation = new Presentation();
try {
    // Pobierz format akapitu najwyższego poziomu.
    $paragraphFormat = $presentation->getDefaultTextStyle()->getLevel(0);

    if (!java_is_null($paragraphFormat)) {
        $paragraphFormat->getDefaultPortionFormat()->setFontHeight(14);
        $paragraphFormat->getDefaultPortionFormat()->setFontBold(NullableBool::True);
    }

    $presentation->save("default_text_style.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Wyodrębnianie tekstu z efektem wielkich liter

W PowerPoint zastosowanie efektu All Caps powoduje wyświetlanie tekstu wielkimi literami na slajdzie, nawet jeśli został on wprowadzony małymi literami. Gdy pobierasz taką część tekstu za pomocą Aspose.Slides, biblioteka zwraca tekst dokładnie tak, jak został wprowadzony. Aby uzyskać wyświetlany tekst, sprawdź TextCapType i przekształć zwrócony ciąg do wielkich liter, gdy wartość to All.

Załóżmy, że mamy następujące pole tekstowe na pierwszym slajdzie pliku sample2.pptx.

Efekt All Caps

Poniższy przykład kodu pokazuje, jak wyodrębnić tekst z zastosowanym efektem All Caps:

$presentation = new Presentation("sample2.pptx");
try {
    $autoShape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    $textPortion = $autoShape->getTextFrame()->getParagraphs()->get_Item(0)->getPortions()->get_Item(0);

    echo "Original text: ", $textPortion->getText(), "\n";

    $textFormat = $textPortion->getPortionFormat()->getEffective();
    if (java_values($textFormat->getTextCapType()) === TextCapType::All) {
        $text = strtoupper($textPortion->getText());
        echo "All-Caps effect: ", $text, "\n";
    }
} finally {
    $presentation->dispose();
}

Wyjście:

Original text: Hello, Aspose!
All-Caps effect: HELLO, ASPOSE!

FAQ

Jak zmodyfikować tekst w tabeli na slajdzie?

Aby zmodyfikować tekst w tabeli na slajdzie, użyj Table. Przejdź przez komórki i zaktualizuj każdą z nich poprzez ramkę tekstową Cell oraz formatowanie akapitu za pomocą Paragraph’s paragraph format.

Jak zastosować gradientowy kolor do tekstu w slajdzie PowerPoint?

Aby zastosować gradientowy kolor do tekstu, użyj formatu wypełnienia PortionFormat. Ustaw typ wypełnienia FillFormat na FillType Gradient i skonfiguruj przystanki gradientu, kierunek oraz przezroczystość.