Как программно применять MapXtreme Themes - PullRequest
0 голосов
/ 09 февраля 2012

Я поддерживаю настольное приложение, используя MapXtreme 7.0, и у меня возникают проблемы с поиском большого количества документации или полезных примеров (у меня есть файлы PDF, образцы и т. Д., Которые находятся на установочных дисках)

В настоящее время я пытаюсь программно применитьIndividualValueTheme для FeatureLayer.Я могу применить стандартную тему по умолчанию, я также могу показать ModifyIndValueThemeDlg и позволить пользователю изменить тему.Однако я хочу применить свою собственную тему к слою без вмешательства пользователя.

Следующий код пытается это сделать, но в результате слой отображается с индивидуальным значением по умолчанию IndividualValueTheme (то есть не с моими стилями)

Любая помощь будет принята с благодарностью

void ApplyTheme(FeatureLayer lyr)
{
    if (lyr.Modifiers.Contains(HarvOpsTheme) || lyr.Modifiers.Contains(HarvOpsRangedTheme))
        return;
    HarvOpsTheme = new IndividualValueTheme(lyr, "iOperationType","HarvOpsTheme");
    lyr.Modifiers.Append(HarvOpsTheme);
    HarvOpsTheme.Bins[0].Style.ApplyStyle(GetHollowAreaStyle(Color.FromArgb(255, 255, 0)));
    HarvOpsTheme.Bins[1].Style.ApplyStyle(GetHollowAreaStyle(Color.FromArgb(0, 255, 0)));
    HarvOpsTheme.Bins[2].Style.ApplyStyle(GetHollowAreaStyle(Color.FromArgb(128, 128, 0)));
    HarvOpsTheme.Bins[3].Style.ApplyStyle(GetHollowAreaStyle(Color.FromArgb(192, 128, 0)));
    HarvOpsTheme.Bins[4].Style.ApplyStyle(GetHollowAreaStyle(Color.FromArgb(0, 128, 0)));
    HarvOpsTheme.Bins[5].Style.ApplyStyle(GetHollowAreaStyle(Color.FromArgb(0, 205, 128)));
    HarvOpsTheme.Bins[6].Style.ApplyStyle(GetHollowAreaStyle(Color.FromArgb(255, 0, 0)));

    HarvOpsTheme.Apply(HarvOpsTheme);
    HarvOpsTheme.RecomputeStyles();

    lyr.Invalidate();
}

AreaStyle GetHollowAreaStyle(Color color)
{
    return new AreaStyle
    {
        Interior = StockStyles.HollowFillStyle(),
        Border = new SimpleLineStyle(new LineWidth(1,LineWidthUnit.Pixel), 1, color)
    };
}

1 Ответ

0 голосов
/ 04 октября 2012

Только для отдельной темы, при повторном вычислении стилей воссоздается первый результат создания тем. После того, как пользователь изменяет стили с помощью [Bins], вам не нужно повторно вычислять их снова.

Короче, просто уберите строку и позвольте магии случиться

HarvOpsTheme.RecomputeStyles();

С наилучшими пожеланиями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...