Написание собственного текста в произвольной позиции на графике

Я создал хороший график, но чего-то не хватает. Я хотел бы иметь возможность установить текст где-то в нем. Оптимальным решением будет, например, текущая дата, выделенная огромными желтыми буквами прямо в середине моего графика.

Я гуглил за такую ​​вещь, но ни одна из ссылок ( доказательство того, что я погуглил № 1, доказательство того, что я погуглил # 2) не давала никаких подсказок о том, возможно ли это или нет. На самом деле, макет изображения во второй ссылке был бы чем-то для меня, если бы описания и стрелки не были нарисованы впоследствии в процессоре изображений.

NB. Это не отчет вообще. Это просто диаграмма - одиночный одинокий график, который отображает значения пары рядов. Я могу управлять внешним видом, легендой и т. Д. Однако я хотел бы поместить плавающий текстовый объект (DIV, форматируемый с помощью CSS, было бы идеально), спрайт, оверлей, вызывать его как угодно, чтобы получить его значение. из данного поля (например, текущая дата).

И если бы я мог свободно расположить его где-нибудь на графике, это было бы даже "идеально", но я бы согласился на размещение в форме "сверху-справа" или тому подобное. В качестве альтернативы, если есть возможность объединить два "вида" друг на друга или что-то в этом роде (я бью по кустам с этим).

Это достижимо и если да, то как?

2 ответа

Решение

Да, у меня была игра, я хорошо разбираюсь в SDK, немного в Google, и это лучшее, что я могу придумать.

Я знаю, как разместить текст в произвольных позициях на диаграмме, но только со статическим текстом, например, я не знаю, как динамически привязать текст к чему-либо - я подозреваю, что это больше связано с CRM, чем с диаграммами, я не смог найти много документация для CRM и графики.

Итак, я обнаружил, что TextAnnotation позволяет вам размещать текст в любом месте. Это содержится вAnnotations коллекции.

Например:

<Chart>
  ...
  <Annotations>
    <TextAnnotation Text="This is an annotation" Name="TextAnnotation1" X="20" Y="50">
    </TextAnnotation>
  </Annotations>
  ...
</Chart>

Настолько важно отметить, что положение TextAnnotation является относительным, например, аннотация появится на 20% ширины графика слева. 0,0 - верхний левый угол. В MSDN есть несколько подробностей о позиционировании.

Так что я могу создать диаграмму следующим образом:

ПРИВЕТ, МИР! это аннотация.

Используя этот XML:

<Chart Palette="None" PaletteCustomColors="55,118,193; 197,56,52; 149,189,66; 117,82,160; 49,171,204; 255,136,35; 97,142,206; 209,98,96; 168,203,104; 142,116,178; 93,186,215; 255,155,83">
  <Series>
    <Series ShadowOffset="0" IsValueShownAsLabel="True" Font="{0}, 9.5px" LabelForeColor="59, 59, 59" CustomProperties="PieLabelStyle=Inside, PieDrawingStyle=Default" ChartType="pie">
      <SmartLabelStyle Enabled="True" />
    </Series>
  </Series>
  <ChartAreas>
    <ChartArea>
      <Area3DStyle Enable3D="false" />
    </ChartArea>
  </ChartAreas>
  <Legends>
    <Legend Alignment="Center" LegendStyle="Table" Docking="right" IsEquallySpacedItems="True" Font="{0}, 11px" ShadowColor="0, 0, 0, 0" ForeColor="59, 59, 59" />
  </Legends>
  <Titles>
    <Title Alignment="TopLeft" DockingOffset="-3" Font="{0}, 13px" ForeColor="0, 0, 0"></Title>
  </Titles>
  <Annotations>
    <TextAnnotation Text="HELLO WORLD!" Font="Stencil, 15.75pt, style=Bold, Italic, GdiCharSet=0" Name="TextAnnotation1" X="20" Y="50" ForeColor="Orange">
    </TextAnnotation>
  </Annotations>
</Chart>

Если это не отвечает вашим требованиям, я бы посоветовал взглянуть на отчет SSRS или какой-либо другой пользовательский фрагмент, вставленный в панель управления.

Возможно, вы захотите проверить эту ссылку, где они размещают описательный текст на карте. У меня это не сработало (тоже не очень старался), но довольно просто установить следующий текст вместо графика с помощью следующего кода.

<visualization>
  <primaryentitytypecode>blobb</primaryentitytypecode>
  <name>My custom name</name>
  <webresourcename>MyCustomHttpFile</webresourcename>
</visualization>

Я был бы действительно рад иногда удивить клиента флэш-текстом, поэтому эту идею стоит изучить. Странно, я не нашел хорошего руководства о том, как это сделать.

Другие вопросы по тегам