Udostępnij za pośrednictwem


Obsługa trybu dużego kontrastu w wizualizacjach usługi Power BI

Ustawienie wysokiego kontrastu systemu Windows ułatwia wyświetlanie tekstu i grafiki dzięki wyświetlaniu bardziej odrębnych kolorów. W tym artykule omówiono sposób dodawania obsługi trybu wysokiego kontrastu do wizualizacji usługi Power BI. Aby uzyskać więcej informacji, zobacz Obsługa dużego kontrastu w usłudze Power BI.

Aby wyświetlić implementację obsługi dużego kontrastu, przejdź do repozytorium wizualizacji PowerBI-visuals-sampleBarChart.

Aby wyświetlić wizualizację w trybie dużego kontrastu, musisz:

Inicjowanie

Element członkowski colorPalette ma options.host kilka właściwości trybu wysokiego kontrastu. Użyj tych właściwości, aby określić, czy tryb wysokiego kontrastu jest aktywny, a jeśli tak, jakie kolory mają być używane.

  • Wykrywanie, że usługa Power BI jest w trybie dużego kontrastu

    Jeśli host.colorPalette.isHighContrast jest true, tryb wysokiego kontrastu jest aktywny, a wizualizacja powinna odpowiednio rysować.

  • Uzyskiwanie kolorów o wysokim kontraście

    Podczas wyświetlania w trybie dużego kontrastu wizualizacja powinna ograniczać się do następujących ustawień:

    • Kolor pierwszego planu służy do rysowania dowolnych linii, ikon, tekstu i konturu lub wypełnienia kształtów.

    • Kolor tła jest używany dla tła i jako kolor wypełnienia konturowanych kształtów.

    • Kolor zaznaczony na pierwszym planie służy do wskazywania wybranego lub aktywnego elementu.

    • Kolor hiperłącza jest używany tylko dla tekstu hiperłącza.

      Uwaga

      Jeśli potrzebny jest dodatkowy kolor, kolor pierwszego planu może być używany z pewną nieprzezroczystością (wizualizacje natywne usługi Power BI używają nieprzezroczystości 40%. Użyj tego oszczędnie, aby zachować łatwo widoczne szczegóły wizualizacji.

Podczas inicjowania można przechowywać następujące wartości w metodzie constructor :

private isHighContrast: boolean;

private foregroundColor: string;
private backgroundColor: string;
private foregroundSelectedColor: string;
private hyperlinkColor: string;
//...

constructor(options: VisualConstructorOptions) {
    this.host = options.host;
    let colorPalette: ISandboxExtendedColorPalette = host.colorPalette;
    //...
    this.isHighContrast = colorPalette.isHighContrast;
    if (this.isHighContrast) {
        this.foregroundColor = colorPalette.foreground.value;
        this.backgroundColor = colorPalette.background.value;
        this.foregroundSelectedColor = colorPalette.foregroundSelected.value;
        this.hyperlinkColor = colorPalette.hyperlink.value;
    }

Można też przechowywać host obiekt podczas inicjowania i uzyskiwać dostęp do odpowiednich colorPalette właściwości podczas aktualizacji.

Implementacja

Konkretne implementacje obsługi wysokiego kontrastu różnią się od wizualizacji do wizualizacji i zależą od szczegółów projektu graficznego. Aby zachować łatwość rozróżniania ważnych szczegółów przy użyciu ograniczonych kolorów, tryb wysokiego kontrastu zwykle wymaga projektu nieco innego niż tryb domyślny.

Wizualizacje natywne usługi Power BI są zgodne z następującymi wytycznymi:

  • Wszystkie punkty danych używają tego samego koloru (pierwszego planu).
  • Cały tekst, osie, strzałki i linie używają koloru pierwszego planu.
  • Grube kształty są rysowane jako kontury z grubymi pociągnięciami (co najmniej dwoma pikselami) i wypełnieniem koloru tła.
  • Gdy punkty danych są istotne, są rozróżniane przez różne kształty znaczników, a linie danych są rozróżniane przez różne kreskowanie.
  • Gdy element danych zostanie wyróżniony, wszystkie inne elementy zmieniają nieprzezroczystość na 40%.
  • W przypadku fragmentatorów i aktywnych elementów filtru użyj koloru wybranego na pierwszym planie.

Poniższy przykładowy wykres słupkowy jest rysowany z dwoma pikselami grubego konturu pierwszego planu i wypełnienia tła. Porównaj wygląd z domyślnymi kolorami i następującymi motywami o wysokim kontraście:

Przykład

Poniższy kod przedstawia jedno miejsce w visualTransform funkcji, które zostało zmienione w celu obsługi dużego kontrastu. Jest ona wywoływana jako część renderowania podczas aktualizacji. Aby uzyskać pełną implementację tego kodu, zobacz barChart.ts plik w repozytorium wizualizacji PowerBI-visuals-sampleBarChart.

for (let i = 0, len = Math.max(category.values.length, dataValue.values.length); i < len; i++) {
    let defaultColor: Fill = {
        solid: {
            color: colorPalette.getColor(category.values[i] + '').value
        }
    };

    barChartDataPoints.push({
        category: category.values[i] + '',
        value: dataValue.values[i],
        color: getCategoricalObjectValue<Fill>(category, i, 'colorSelector', 'fill', defaultColor).solid.color,
        selectionId: host.createSelectionIdBuilder()
            .withCategory(category, i)
            .createSelectionId()
    });
}