Русские подписи к объектам динамического слоя

0 голосов
спросил 02 Окт, 08 от kamakama (280 баллов) в категории Программные продукты Esri
    Помогите, долго бьемся над проблемой, но так решения и не нашли. Используется ArcGIS Engine 9.2 в паре с MSVS 2008, С#. При работе используются динамический слой и, соответсвенно, динамические глифы. За основу был взят пример MyDynamikLayer из комплекта поставки ArcGIS. Подскажите, какое имя шрифта нужно поставить в приведенный ниже код, что бы показывался текст на кириллице(кодировка UTF-8)? И вообще, откуда можно брать эти шрифты, подойдут обычные TTF или нужны только "родные"? Если дело не в шрифтах, то как разрешить эту проблему?
               stdole.IFont fontEsri;
               fontEsri = new stdole.StdFontClass();
               fontEsri.Name = "ESRI Environmental & Icons";
               fontEsri.Size = 32;
               ICharacterMarkerSymbol characterMarkerSymbol = new CharacterMarkerSymbolClass();
               characterMarkerSymbol.Color = color as IColor;
               characterMarkerSymbol.Font = fontEsri as stdole.IFontDisp;
               characterMarkerSymbol.Size = 40;
               characterMarkerSymbol.Angle = 0;
               characterMarkerSymbol.CharacterIndex = 36;

2 Ответы

0 голосов
ответил 02 Окт, 08 от Grigoriy (127,020 баллов)
Интересно, Вы каждую букву будете по отдельности выводить? Маркер - это точечный объект.

Для работы с текстом существует ITextSymbol
http://resources.esri.com/help/9.3/ArcGISEngine/ArcObjects/esriDisplay/ITextSymbol_Example.htm

Для динамического тоже:
http://resources.esri.com/help/9.3/ArcGISEngine/ArcObjects/esriDisplay/esriDynamicGlyphType.htm
Шрифты подходят те, которые установлены в системе (Windows).
0 голосов
ответил 03 Окт, 08 от kamakama (280 баллов)
Я немного не правильно сформулировал вопрос. Необходимо сделать подписи под динамическими объектами, создаваемых из растрового изображения. Для этого в перекрытой процедуре построения динамического слоя      
public override void DrawDynamicLayer(ESRI.ArcGIS.Display.esriDynamicDrawPhase DynamicDrawPhase, ESRI.ArcGIS.Display.IDisplay Display, ESRI.ArcGIS.Display.IDynamicDisplay DynamicDisplay)

для показа текста рядом с объектами используется следующий код :
dynamicCompoundMarker.DrawCompoundMarker2(_point, _moList[_i].State+"\n"+(System.Convert.ToInt32(Speed)).ToString() + "KM/H", _moList[_i].Name);

//рисуем объект
DynamicDisplay.DrawMarker(_point);

Суть в том, что перед вызовом процедуры показа текста происходит настройка свойств показа текста (код в первом сообщении). Установка шрифтов типа "Courier New" не помогает.
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...