Нет chart в visual studio
Использование Microsoft Graphics Control (Chart или MSchart) Срочное использование! ! !
--> < asp:Chart ID ="ChartMemory" runat ="server" BackColor ="LightSteelBlue"
BackGradientStyle ="TopBottom" BackSecondaryColor ="White" EnableTheming ="False"
EnableViewState ="True" Height ="363px" Width ="415px" >
< Legends >
< asp:Legend Alignment ="Center" Docking ="Bottom" Name ="Legend1" Title = "Легенда" >
</ asp:Legend >
</ Legends >
< Titles >
< asp:Title Font = "Microsoft Yahei, 16pt" Name ="Title1" Text = "Диаграмма мониторинга системной памяти" >
</ asp:Title >
</ Titles >
< Series >
< asp:Series BorderColor ="White" BorderWidth ="3" ChartArea ="ChartArea1"
ChartType ="Spline" Legend ="Legend1" Name = "Используемая физическая память" XValueType ="Double"
YValueType ="Double" >
</ asp:Series >
< asp:Series BorderWidth ="3" ChartArea ="ChartArea1" ChartType ="Spline"
Legend ="Legend1" Name = "Вся занятая память" >
</ asp:Series >
< asp:Series ChartArea ="ChartArea2" ChartType ="StackedArea" Legend ="Legend1"
Name ="CPU" >
</ asp:Series >
</ Series >
< ChartAreas >
< asp:ChartArea BackColor ="224, 224, 224" BackGradientStyle ="LeftRight"
Name ="ChartArea1" >
</ asp:ChartArea >
< asp:ChartArea Name ="ChartArea2" >
</ asp:ChartArea >
</ ChartAreas >
</ asp:Chart >
Всего было создано две области рисования: одна используется для отображения использования памяти в области ChartArea1, а другая используется для отображения использования ЦП и помещается в область ChartArea2. Всего имеется три диаграммы, которые соответственно показывают используемую физическую память, занимаемую физическую память и отображение использования ЦП.
Добавьте таймер Ajax, Ajax ScriptManager, UpdatePanel и перетащите элементы управления таймером и диаграммой в UpdatePanel. Установите интервал таймера равным одной секунде (1000), дважды щелкните таймер и напишите следующий код:
Code
--> static PerformanceCounter pc = new PerformanceCounter( " Processor " , " % Processor Time " , " _Total " );
protected void Timer1_Tick( object sender, EventArgs e)
<
MEMORY_INFO MemInfo = new MEMORY_INFO();
ComputerInfo.GlobalMemoryStatus( ref MemInfo);
// UseMemory
Series series = ChartMemory.Series[ 0 ];
int xCount = series.Points.Count == 0 ? 0 : series.Points.Count - 1 ;
double lastXValue = series.Points.Count == 0 ? 1 : series.Points[xCount].XValue + 1 ;
double lastYValue = ( double )(MemInfo.dwTotalPhys - MemInfo.dwAvailPhys) / 1024 / 1024 ;
series.Points.AddXY(lastXValue, lastYValue);
// Total Memory
series = ChartMemory.Series[ 1 ];
lastYValue = ( double )(MemInfo.dwTotalVirtual + MemInfo.dwTotalPhys - MemInfo.dwAvailPhys - MemInfo.dwAvailVirtual) / 1024 / 1024 ;
series.Points.AddXY(lastXValue, lastYValue);
// CPU
series = ChartMemory.Series[ 2 ];
lastYValue = ( double )pc.NextValue();
series.Points.AddXY(lastXValue, lastYValue);
Прикрепите код класса для получения информации о памяти:
--> /// <summary>
/// Получить информацию о компьютерной системе
/// </summary>
public class ComputerInfo
/// <summary>
/// Получить каталог Windows
/// </summary>
/// <param name="WinDir"></param>
/// <param name="count"></param>
[DllImport( " kernel32 " )]
public static extern void GetWindowsDirectory(StringBuilder WinDir, int count);
/// <summary>
/// Получить системный путь
/// </summary>
/// <param name="SysDir"></param>
/// <param name="count"></param>
[DllImport( " kernel32 " )]
public static extern void GetSystemDirectory(StringBuilder SysDir, int count);
/// <summary>
/// Получить информацию о процессоре
/// </summary>
/// <param name="cpuinfo"></param>
[DllImport( " kernel32 " )]
public static extern void GetSystemInfo( ref CPU_INFO cpuinfo);
/// <summary>
/// Получить статус памяти
/// </summary>
/// <param name="meminfo"></param>
[DllImport( " kernel32 " )]
public static extern void GlobalMemoryStatus( ref MEMORY_INFO meminfo);
/// <summary>
/// Получить системное время
/// </summary>
/// <param name="stinfo"></param>
[DllImport( " kernel32 " )]
public static extern void GetSystemTime( ref SYSTEMTIME_INFO stinfo);
// Определите информационную структуру ЦП
[StructLayout(LayoutKind.Sequential)]
public struct CPU_INFO
public uint dwOemId;
public uint dwPageSize;
public uint lpMinimumApplicationAddress;
public uint lpMaximumApplicationAddress;
public uint dwActiveProcessorMask;
public uint dwNumberOfProcessors;
public uint dwProcessorType;
public uint dwAllocationGranularity;
public uint dwProcessorLevel;
public uint dwProcessorRevision;
>
// Определите информационную структуру памяти
[StructLayout(LayoutKind.Sequential)]
public struct MEMORY_INFO
public uint dwLength;
public uint dwMemoryLoad;
public uint dwTotalPhys;
public uint dwAvailPhys;
public uint dwTotalPageFile;
public uint dwAvailPageFile;
public uint dwTotalVirtual;
public uint dwAvailVirtual;
>
// Определите информационную структуру системного времени
[StructLayout(LayoutKind.Sequential)]
public struct SYSTEMTIME_INFO
public ushort wYear;
public ushort wMonth;
public ushort wDayOfWeek;
public ushort wDay;
public ushort wHour;
public ushort wMinute;
public ushort wSecond;
public ushort wMilliseconds;
>
Эффект от запуска следующий:
for (i=0; i<document.form1.rcount.value; i++)
<
for (j=0; j<document.form1.ccount.value; j++)
<
mschart1.Row =i+1;
mschart1.Column =j+1;
<%for i=1 to Request.Form("rcount")*Request.Form("ccount")%>
<%
if Request.Form("rc_data_type")=1 then
xvalue = Request.Form("rc_data1")(i)
end if
if Request.Form("rc_data_type")=2 then
xvalue = Request.Form("rc_data2")(i)
end if
if Request.Form("rc_data_type")=3 then
xvalue = Request.Form("rc_data3")(i)
end if
%>
<input type="hidden" name="rc_data" value=<%=xvalue%>>
<%next%>
</FORM>
</BODY>
</HTML>
for (i=0; i<document.form1.rcount.value; i++)
<
for (j=0; j<document.form1.ccount.value; j++)
<
mschart1.Row =i+1;
mschart1.Column =j+1;
<%rc_data_point = 0%>
<%xvalue = 0%>
<%if Request.Form("rcount")>=1 then
for i=1 to Request.Form("ccount")%>
<%
xvalue = xvalue + Request.Form("rc_data1")(i)
if (rc_data_point<CInt(Request.Form("rc_data_point"))) or (rc_data_point=CInt(Request.Form("ccount"))-1) then
%>
<input type="hidden" name="rc_data" value=<%=formatnumber(xvalue,2,-1)%>>
<%
xvalue = 0
end if
rc_data_point = rc_data_point+1
if rc_data_point mod CInt(Request.Form("ccount"))=0 then
rc_data_point = 0
end if
%>
<%next
end if%>
<%if Request.Form("rcount")>=2 then
for i=1 to Request.Form("ccount")%>
<%
xvalue = xvalue + Request.Form("rc_data2")(i)
if (rc_data_point<CInt(Request.Form("rc_data_point"))) or (rc_data_point=CInt(Request.Form("ccount"))-1) then
%>
<input type="hidden" name="rc_data" value=<%=formatnumber(xvalue,2,-1)%>>
<%
xvalue = 0
end if
rc_data_point = rc_data_point+1
if rc_data_point mod CInt(Request.Form("ccount"))=0 then
rc_data_point = 0
end if
%>
<%next
end if%>
<%if Request.Form("rcount")>=3 then
for i=1 to Request.Form("ccount")%>
<%
xvalue = xvalue + Request.Form("rc_data3")(i)
if (rc_data_point<CInt(Request.Form("rc_data_point"))) or (rc_data_point=CInt(Request.Form("ccount"))-1) then
%>
<input type="hidden" name="rc_data" value=<%=formatnumber(xvalue,2,-1)%>>
<%
xvalue = 0
end if
rc_data_point = rc_data_point+1
if rc_data_point mod CInt(Request.Form("ccount"))=0 then
rc_data_point = 0
end if
%>
<%next
end if%>
</FORM>
</BODY>
</HTML>
- Вы можете добавить необходимые данные в Точки под свойством Серии в окне настройки свойств в интерфейсе дизайна диаграммы.
- Вы можете привязать источник данных в свойствах в интерфейсе дизайна диаграммы.
- Вы можете динамически добавлять данные в фоновый код.
- Один или несколько источников данных можно установить в фоновом коде и напрямую привязать к диаграмме.
- Элемент управления диаграммы поддерживает привязку нескольких источников данных. Например, ось X может быть привязана к набору данных ds1, а ось Y может быть привязана к другому набору данных ds2. Конечно, ось X может быть привязана к объекту данных List, а ось Y может быть привязана. К объекту DataView и так далее.
- Обычно существует два способа привязки элементов управления диаграммой: обычная привязка и перекрестная привязка таблиц.
- Данные оси Y элемента управления диаграммой поддерживают одновременную привязку нескольких значений для рисования графиков, таких как время, площадь, использование и т. Д.
--> // Установите источник данных, myDv - это DataView, который извлекает набор данных
chart1.DataSource = myDv;
// Установите значение X и значение Y диаграммы отдельно
chart1.Series[ " Series1 " ].XValueMember = " Name " ;
chart1.Series[ " Series1 " ].YValueMembers = " Sales " ;
// Данные набора привязки
chart1.DataBind();
[/pre]
Второй тип: прямой вызов метода привязки точки.
[pre] Code
--> // myReader - полученный объект DataReader
Chart1.Series[ " Series1 " ].Points.DataBindXY(myReader, " Name " , myReader, " Sales " );
[/pre]
Третий метод: вызов реализации метода DataBind
[pre] Code
--> Chart1.Series[ " Series1 " ].Points.DataBind(myReader, " Name " , " Sales " , "" ); [/pre]
Эффекты вышеупомянутых методов одинаковы. Конечно, для трех указанных выше методов необходимо самостоятельно создать серию и отобразить две гистограммы, как график в приведенном выше примере, затем Вам необходимо вручную создать две серии, а затем выполнить указанные выше операции привязки соответственно.
В этом давайте поговорим о методе привязки метки и всплывающей подсказки. Метка (метка) и подсказка (всплывающая подсказка) должны отображаться на связанной диаграмме. Вы можете установить свойства привязки при привязке. Для первого и второго методов, описанных выше, вы можете вызвать следующие методы, чтобы установить Label и Tooltip; например, две последовательности данных Имена - Series1 и Series2 соответственно, а код установлен на следующим образом:
[pre] Code
--> Chart1.Series[ " Series1 " ].Points.DataBind(myDs.Tables[ 0 ].DefaultView, " Name " , " ID " , " Label=ID,ToolTip=RegionID " );
Chart1.Series[ " Series2 " ].Points.DataBind(myDs.Tables[ 0 ].DefaultView, " Name " , " RegionID " , " Label=RegionID,ToolTip=ID " ); [/pre]
на самом деле использует третий атрибут для установки атрибута привязки с помощью форматированной строки: Label означает метку, ToolTip означает подсказку, URL означает гиперссылку и так далее. Окончательное изображение выглядит следующим образом:
2. Свяжите кросс-таблицу
Элемент управления диаграммой Microsoft предоставляет метод привязки данных кросс-таблицы DataBindCrossTable, который может динамически генерировать последовательность данных (серию) на основе данных, заимствуя официальный пример, данные таблицы базы данных выглядят следующим образом:
REPSALES
Name | Year | Sales | Commissions |
John | 2002 | 55676.55 | 2699.33 |
Mary | 2002 | 44333 | 2299 |
Andrew | 2002 | 64455.4 | 3636 |
John | 2003 | 49884 | 2355 |
Mary | 2003 | 52994 | 2487 |
Andrew | 2003 | 66449 | 3794 |
John | 2004 | 62994 | 3593 |
Mary | 2004 | 54993 | 2599 |
Andrew | 2004 | 78993 | 4852 |
Давайте посмотрим на параметры DataBindCrossTable. У него есть два перегруженных метода, а именно:
public void DataBindCrossTable (
IEnumerable dataSource,
string seriesGroupByField,
string xField,
string yFields,
string otherFields,
PointSortOrder sortingOrder
)
и
public void DataBindCrossTable (
IEnumerable dataSource,
string seriesGroupByField,
string xField,
string yFields,
string otherFields
)
Значение каждого параметра следующее:
dataSource Связываемый источник данных.
seriesGroupByField Имя поля данных, которое будет сгруппировано и подсчитано, например по имени, дате и т. д.
Имя поля, привязанного к оси X xField.
yFields Имена полей, привязанных к оси Y. Если необходимо связать несколько полей, разделите имена полей запятыми.
otherFields Другие атрибуты поля данных только что упомянуты выше, такие как метка, приглашение, URL-адрес и другие атрибуты.
sortingOrder Укажите, в правильном или обратном порядке расположены данные.
В настоящее время, чтобы подсчитать годовой график продаж каждого пользователя, в качестве имени поля для группировки статистики следует указать Имя, как показано ниже:
[pre] Code
--> Chart1.DataBindCrossTable(
myReader,
" Name " ,
" Year " ,
" Sales " ,
" Label=Commissions " ); [/pre]
Используйте описанный выше метод для привязки, сгенерированная графика выглядит следующим образом:
Напротив, если вы хотите подсчитать годовую кривую количества пользователей, просто переверните поле, как показано ниже:
[pre] Code
Чтобы им воспользоваться вам необходимо выделить проект нажать правую кнопку мыши, далее выбрать Представление и > Перейти к диаграмме классов.
В последних версия VS переименовали компонент, потому многие его не могу найти, для этого я дополню статью.
Откроется окно Visual Studio Installer
Далее вам не обходимо перейти на вкладку Отдельный компоненты.
И в поле поиска вписать слово конструктор.
От фильтруется список и вы увидите компонент Конструктор классов нужно установить галочку на компоненте. И нажать в правом углу кнопку изменить.
Произойдет загрузка компонента и у вас вновь откроется студия по завершению.
Далее вам необходимо выбрать правой кнопкой мыши по проекту и перейти в пункт Представление >>Перейти к диаграмме классов. У вас загрузится конструктор как на скриншоте.
Visual Studio 2019 Professional 16.6.3
В шаблонах проектов не могу найти Modeling Projects (средство построения диаграмм).
Что надо установить или изменить, чтобы получить данное средство?
Надо вот это
- Вопрос задан 23 нояб. 2020
- 2264 просмотра
Не могу там найти Modeling Projects.
При установке внимательно выбирал компоненты на вкладке Отдельные компоненты -> Средства для работы с кодом.
(Конструктор классов установлен)
Johnny Gat, Скриншот с версии Ultimate 2012 Update 2.
В Visual Studio 2019 нет указанных на скриншоте элементов, но есть возможность создавать ClassDiagramm.cd которые очень похожи.
Johnny Gat,
В видеоуроке используют VS 2012 и говорят - изучаем uml диаграммы. Создают Modeling Project -> UML Class diagramm. Картинки я привел.
В VS 2019 этого нет.
Но в VS 2019 я нашел диаграмму классов. По функционалу она очень похожа на uml диаграмму VS 2019.
Это одно и тоже?
Просто для дальнейшего изучения мне нужен этот инструмент. А менять VS 2019 на VS 2012 наверно плохая идея. Продукт скорее всего устарел или будут проблемы с другими расширениями.
Состав панели элементов меняется в зависимости от того, какую платформу вы выбираете для разработки. Например, ниже на рисунке показаны различные варианты Toolbox для трех вариантов проектов: WinForms, WPF и UWP:
По умолчанию в панели элементов (toolbox) появятся только стандартные элементы управления. Например, мы захотим использовать в нашем проекте компоненты Ribbon Controls (как в Office). Для того, чтобы их использовать в своем проекте, мы должны добавить ссылку на них в свой проект. Сделать это можно следующим образом:
Теперь мы можем подключать необходимые пространства имен в наш проект и использовать компоненты в проекте. Однако в панели элементов они не появятся. Для того, чтобы добавить их в панель элементов необходимо выполнить ещё несколько простых действий.
Добавим наши компоненты Ribbon Controls в панель элементов. Элементы могут добавляться как в уже существующие вкладки, так и в новые, созданные нами. Воспользуемся вторым вариантом.
5. Теперь в панели элементов появятся новые элементы управления, которые можно добавлять на форму приложения простым перетаскиванием мышкой:
Сегодня мы разобрались с вопросом как добавить новые элементы управления в проект и добавить их в панель элементов (toolbox) Visual Studio 2019. Не всегда устанавливаемые элементы управления автоматически отображаются в панели элементов, поэтому иногда требуется воспользоваться их добавлением вручную, используя возможности IDE.
Читайте также: