Suite

Définir la couleur d'un TextSymbol

Définir la couleur d'un TextSymbol


public void DrawText( vue IActiveView, chaîne de texte, chaîne fontName, int fontColor, float fontSize, IPoint point ) { ITextSymbol textSymbol = new TextSymbol(); stdole.IFontDisp font = textSymbol.Font; font.Name = fontName; font.Size = (décimal)fontSize; textSymbol.Font = font; IColor couleur = textSymbol.Color; couleur.RVB = fontColor; textSymbol.Color = couleur; ITextElement textElement = new TextElementClass(); textElement.Text = texte; textElement.Symbol = textSymbol; textElement.ScaleText = true; élément IElement = textElement as IElement; élément.Géométrie = point; view.GraphicsContainer.AddElement( élément, 0 ); view.PartialRefresh( esriViewDrawPhase.esriViewGraphics, element, null ); }

Quelqu'un peut-il me suggérer pourquoi ce code définit toujours correctement la police et la taille, mais ne parvient parfois pas à définir correctement la couleur? Je vois toujours la bonne couleur dans la propriété 'textSymbol.Color' après la ligne qui la définit sur 'color'. Sur la carte (à l'intérieur d'un calque), il semble parfois « combiner » avec la couleur de remplissage de ce calque et en dehors de la carte, il apparaît parfois « bleu ».


J'utilisais System.Drawing.Color.ToArgb() pour convertir le System.Drawing.Color qu'un contrôle renvoyait. J'avais déjà écrit :

public static int ConvertColorToRGB( System.Drawing.Color sourceColor ) { IRgbColor targetColor = new RgbColorClass(); targetColor.Red = sourceColor.R; targetColor.Green = sourceColor.G; targetColor.Blue = sourceColor.B; targetColor.Transparency = sourceColor.A; return targetColor.RGB; }

Qui fonctionne.