개발자 가이드

.NET, WPF & C++ 차트 아키텍처, 데이터 처리 및 성능

developer guide
.net chart
wpf chart
c# chart component
scientific chart
winform chart
charting component
chart control

개발자 가이드
.NET, WPF & C++ 차트 아키텍처, 데이터 처리 및 성능

이 가이드는 ProEssentials로 전문적인 차트를 구축하는 데 필요한 모든 것을 다룹니다 — 올바른 차트 객체 선택부터 효율적인 데이터 처리, GPU 가속 실시간 스트리밍까지. ProEssentials는 Direct2D, Direct3D 및 GdiPlus 렌더링을 갖춘 네이티브 .NET 및 C++ 차트 컴포넌트로, 최소한의 CPU/GPU 사이클과 가장 빠른 차트 렌더링을 위해 설계되었습니다. WinForm 차트, WPF 차트 또는 MFC C++ 시각화를 구축하든 이것이 귀하의 기술 참조입니다.

차트 객체 선택

모든 ProEssentials 구현은 다섯 가지 차트 객체 중 하나를 선택하는 것에서 시작됩니다. 이 선택이 전체 구현을 결정합니다 — 데이터 모델, 축 동작, 플로팅 방법 및 사용 가능한 기능. 데이터와 시각화 목표에 따라 선택하세요.

Pego — 그래프 객체 37개 예제

범주형 및 순차적 X축 데이터를 위한 표준 .NET 차트 컨트롤. 막대, 선, 영역, 누적 막대, 누적 영역, OHLC, 고-저-종가, 리본 등 총 27개의 플로팅 방법을 지원합니다. X축 레이블은 PointLabels 문자열 배열을 통해 설정됩니다 — 숫자 X 데이터 배열이 필요 없습니다.

용도: 대시보드, 막대 차트, 금융 OHLC/캔들스틱, 범주형 비교, 균일 간격 시계열.

Pesgo — 과학 그래프 객체 50개 예제

연속 숫자 X축 데이터를 위한 과학 차트 컴포넌트. 스캐터, 선, 스플라인, 버블, 영역, 등고선/히트맵 등 총 26개의 플로팅 방법을 지원합니다. PeData.X[subset, point] 값이 있는 명시적 X 데이터 배열이 필요합니다. Jagged data(서브셋별 포인트 수가 다른 경우), 등고선 렌더링 및 가장 광범위한 실시간 스트리밍 옵션을 지원합니다.

용도: 과학 데이터 시각화, XY 스캐터 플롯, 실시간 스트리밍 차트, 불규칙 간격 시계열, 등고선 및 히트맵 차트, 버블 차트.

Pe3do — 3D 과학 그래프 18개 예제

Direct3D 렌더링을 사용하여 X, Y, Z 데이터 배열로 3D 표면, 와이어프레임, 3D 등고선, 3D 막대 차트 및 3D 스캐터 플롯을 렌더링합니다. Y는 수직(높이) 축입니다. AppendData(스크롤 표면) 또는 AppendSubset(워터폴)을 통한 실시간 3D 표면 애니메이션을 지원합니다.

용도: 3D 표면 플롯, 와이어프레임 시각화, 지형 등고선, 3D 워터폴 차트, 지형 렌더링.

Pepso — 극좌표 / Smith 객체 7개 예제

각도 데이터를 위한 극좌표 차트 컴포넌트. 극좌표 선, 극좌표 스캐터, 레이더/스파이더 차트, 로즈 다이어그램, RF 엔지니어링을 위한 Smith 차트를 지원합니다. 데이터는 각도와 크기로 표현됩니다.

용도: 극좌표 플롯, 레이더/스파이더 차트, 로즈 다이어그램, Smith 차트, RF 임피던스 시각화.

Pepco — 파이 차트 객체 4개 예제

분리된 조각, 퍼센트 레이블 및 범례 통합을 갖춘 파이 차트, 도넛 차트 및 다중 링 차트를 렌더링합니다. 조각 값을 위한 단일 데이터 배열.

용도: 파이 차트, 도넛 차트, 비율 데이터 시각화.

데이터 처리 패턴

ProEssentials는 데이터셋 크기와 성능 요구 사항에 따라 선택하는 6가지 데이터 로딩 패턴을 제공합니다. 데이터는 서브셋(시리즈/라인) × 포인트(데이터 값)로 구성됩니다. 먼저 PeData.Subsets와 PeData.Points를 설정한 다음 데이터 배열을 채우세요. 모범 사례: 데이터 준비를 차트 API 코드와 분리하세요 — 먼저 데이터 소스에서 배열을 구축한 다음 완성된 배열을 ProEssentials에 전달하세요.

패턴 1: 직접 인덱싱 10K 포인트 미만

PeData.Y[subset, point] = value로 값을 하나씩 할당합니다. Pesgo의 경우 PeData.X도 설정합니다. Pe3do의 경우 PeData.Z도 설정합니다. 간단하고 명확 — 데모 및 소규모 정적 데이터셋에 최적.

패턴 2: FastCopy 250K 포인트 미만

코드에서 float 배열을 만든 다음 PeData.Y.FastCopyFrom(array)을 호출합니다. 요소별 interop 오버헤드를 방지합니다. 1D, 2D 및 jagged 배열에 대한 오버로드가 있습니다.

패턴 3: UseDataAtLocation 250K+ 포인트, 제로카피

차트가 관리 배열을 직접 가리킵니다 — 데이터 복사가 전혀 없습니다. PeData.Y.UseDataAtLocation(array, bufferSize)을 호출합니다. 매우 큰 데이터셋, 여러 차트에서 공유하는 데이터 또는 실시간 시나리오에 최적.

패턴 4: AppendData 스트리밍 / 실시간

PeData.Y.AppendData(newValues, amountPerSubset)를 호출하여 새 데이터를 푸시합니다. 기존 데이터를 자동으로 이동합니다. 100K+ 데이터 포인트에서 링 버퍼 성능을 위해 CircularBuffers와 결합하세요.

패턴 5: BindData 데이터베이스 / DataReader

PeData.Y.BindData()로 ADO.NET DataReader 또는 DataView에서 직접 로드합니다. 데이터베이스 기반 차트 애플리케이션에 편리합니다.

패턴 6: Jagged Data 가변 길이 서브셋

서브셋의 포인트 수가 다른 경우 PeData.JaggedData = true를 활성화합니다. RenderEngine = Direct2D가 필요합니다. 세 가지 하위 방법: 직접 인덱싱, CopyFromJagged 또는 UseJaggedDataAtLocation.

DuplicateData 최적화: 모든 서브셋이 동일한 X 데이터를 공유하는 경우(Pesgo에서 일반적), PeData.DuplicateDataX = DuplicateData.PointIncrement를 설정합니다. 서브셋 0에 대해서만 X 데이터를 제공하면 차트가 모든 서브셋에 재사용하여 중복 저장을 제거합니다.

실시간 스트리밍

ProEssentials는 단순한 스트립 차트부터 수백만 데이터 포인트의 GPU 가속 고주파 스트리밍까지 5가지 실시간 업데이트 전략을 지원합니다.

필수 설정(모든 실시간 차트): PeConfigure.PrepareImages = true, PeConfigure.CacheBmp = true(깜박임 없는 다시 그리기를 위해 정적 요소 캐시), PeSpecial.AutoImageReset = false(자동 dirty 검사 건너뛰기). 매 tick마다 전체 데이터셋의 최소/최대 스캔을 피하기 위해 수동 축 스케일링을 강력히 권장합니다.

AppendData 스트립 차트

기존 데이터를 이동하고 가장자리에 새 데이터를 추가합니다. 가장 일반적인 실시간 패턴입니다. Pego, Pesgo 및 Pe3do에서 작동합니다. 100K+ 포인트 링 버퍼 성능을 위해 CircularBuffers와 결합하세요.

FastCopyFrom 전체 교체

매 tick마다 모든 데이터를 교체합니다. 전체 버퍼가 동시에 변경되는 오실로스코프 스타일 파형 디스플레이에 최적. 예: 4 서브셋 × 100K 포인트 = tick당 400K 값 교체.

직접 인덱스 순환 쓰기

인덱스로 직접 쓰고 버퍼 끝에서 카운터를 래핑합니다. 이동도 없고 추가도 없이 — 제자리에서 덮어씁니다. 순환 디스플레이에 적합.

AppendSubset 워터폴

Pe3do 전용. 매 tick마다 새로운 완전한 서브셋을 추가하여 3D 워터폴 시각화를 생성합니다. 각 tick이 워터폴에 새 행을 추가합니다.

UseDataAtLocation 제로카피

애플리케이션이 자체 메모리를 관리하고 차트가 직접 읽습니다. 복사 오버헤드가 없습니다. CircularBuffers 및 AppendData와 결합 — ProEssentials가 순환 포인터를 사용하여 로컬 메모리에 데이터를 추가합니다. 예: 4 서브셋 × 2M 포인트의 제로카피.

GPU 성능 기능

ProEssentials는 GPU 가속이 적용된 네이티브 Direct2D 및 Direct3D 렌더링을 통해 가장 빠른 차트 렌더링을 제공합니다. 이러한 기능을 결합하여 최대 처리량을 달성할 수 있습니다.

ComputeShader

PeData.ComputeShader = true. 차트 구성을 GPU로 오프로드 — 단일 CPU 스레드 대비 잠재적으로 2000개 이상의 코어 활용. Direct3D 렌더 엔진을 사용하는 Pesgo 및 Pe3do에 적용됩니다. 차트 지오메트리가 CPU 대신 GPU에서 구축되는 대규모 데이터셋에서 극적인 속도 향상을 제공합니다.

Filter2D3D

PeData.Filter2D3D = true (Pesgo 전용). 2단계 ComputeShader 파이프라인: 먼저 순차적 2D 라인 데이터를 무손실로 사전 필터링한 다음 최종 셰이더가 장면을 구성합니다. 250K+ 포인트 라인 차트에서 극적인 속도 향상. ComputeShader = true와 함께 사용하세요.

CircularBuffers

PeData.CircularBuffers = true. 각 AppendData 호출 시 메모리를 이동하는 대신 링 버퍼 포인터를 사용합니다. 100K+ 데이터 포인트의 실시간 스트리밍에 필수적입니다. Pego, Pesgo, Pepso 및 Pe3do에서 작동합니다.

StagingBuffers

PeData.StagingBufferX/Y/Z = true. 효율적인 CPU-GPU 전송 파이프라인을 위해 데이터 배열의 GPU 측 복사본을 유지합니다. 실시간 렌더링 중 업데이트되는 축별로 활성화하세요.

렌더링 엔진

세 가지 렌더 엔진: Direct2D, Direct3D, GdiPlus. Direct3D는 ComputeShader와 전체 GPU 가속을 활성화합니다. Direct2D는 jagged data와 고급 2D 렌더링을 지원합니다. GdiPlus는 가장 넓은 호환성을 가진 레거시 대체 엔진입니다.

아키텍처 및 속성 인터페이스

ProEssentials는 계층적 속성 인터페이스를 사용합니다. 모든 차트 구성은 차트 컨트롤에서 액세스하는 중첩 속성 객체를 통해 이루어집니다. 이 아키텍처는 .NET 차트, WPF 차트 및 C++ DLL 개발에 동일하게 적용됩니다.

Hierarchical Property Groups

속성 그룹: PeData(데이터 배열, 카운트, 모드), PePlot(플로팅 방법, 시각 옵션), PeGrid(축 스케일, 그리드 라인, 줌), PeColor(모든 요소의 색상), PeString(레이블, 제목), PeFont(글꼴 크기), PeAnnotation(참조선, 그래프 주석, 축 주석), PeUserInterface(상호작용, 커서, 핫스팟, 스크롤바), PeConfigure(렌더링, 캐싱), PeFunction(동작 — 초기화, 인쇄, 줌, 내보내기), PeTable(차트 아래 데이터 테이블), PeLegend(범례 구성).

Enum-Driven Configuration

열거형 기반 구성: 대부분의 동작 설정은 열거형을 사용합니다 — 정수 값을 하드코딩하지 마세요. 주요 열거형: GraphPlottingMethod, SGraphPlottingMethod, ManualScaleControl, ViewingStyle, QuickStyle, RenderEngine, AllowZooming, MultiAxisStyle, CursorMode, CursorPromptStyle. 중요: PePlot.Method는 각 차트 객체에 대해 다른 열거형을 사용합니다.

Rendering Pipeline

렌더링 파이프라인: PeConfigure.CacheBmp = true는 항상 설정해야 합니다 — 깜박임 없는 다시 그리기를 위해 렌더링된 이미지를 메모리에 캐시합니다. PeFunction.ReinitializeResetImage()는 데이터 변경 후 전체 재구축을 수행합니다. PeFunction.ResetImage(0,0)는 시각적 변경 후에만 이미지를 재구축합니다. ProEssentials에는 지능적인 축 스케일링, 레이블 배치, 범례 레이아웃 및 그리드 라인 간격을 통해 보기 좋지 않은 차트를 자동으로 방지하는 AI 유형 로직이 포함되어 있습니다.

Two API Layers

두 가지 API 레이어: .NET 속성 인터페이스와 C++ DLL 인터페이스는 상호 교환 가능합니다 — 둘 다 동일한 네이티브 엔진에 액세스합니다. .NET은 C#/VB/WPF의 표준입니다. DLL 인터페이스는 MFC C++, Delphi 및 특수한 경우에 사용됩니다. PeSpecial.HObject는 interop 시나리오를 위한 네이티브 DLL 핸들을 제공합니다.

주석 및 레이블

ProEssentials는 모든 차트에 참조선, 텍스트 마커, 콜아웃 레이블, 도형 및 데이터 테이블을 추가하기 위한 포괄적인 주석 시스템을 제공합니다.

Line Annotations

라인 주석: 데이터 좌표에서의 수평 및 수직 참조선. 수평선은 PeAnnotation.Line.YAxis[i], 수직선은 PeAnnotation.Line.XAxis[i]를 설정합니다. 16개 이상의 라인 스타일, 주석별 색상, 텍스트 레이블 및 줌 창 가시성 제어를 지원합니다.

Graph Annotations

그래프 주석: 임의의 데이터 좌표에 심볼, 텍스트, 라인, 도형 및 비트맵을 배치합니다. 각진 텍스트, 연결 라인, 텍스트 회피(자동 겹침 방지), 복합 패턴, 비트맵 및 주석별 개별 서식을 지원합니다. 차트 데이터와 독립적 — 콜아웃 레이블, 오버레이 마커 및 장식 요소에 사용합니다.

Table Annotations

테이블 주석: 축 영역 내부, 차트 가장자리 또는 데이터 포인트에 정렬될 수 있는 최대 20개의 독립적으로 배치된 테이블 요소. 개별 셀 서식이 있는 다중 열 및 다중 행 레이아웃을 지원합니다. 사용자 정의 범례, 데이터 요약 및 정보 패널에 사용됩니다.

Quick Annotations

빠른 주석: 전체 이미지 재구축을 피하는 최적화된 경로를 통해 렌더링되는 임시 그래프 주석. 측정 오버레이, 드래그 사각형, 십자선 및 매 마우스 이동 시 업데이트되는 일시적 UI에 이상적입니다.

사용자 상호작용 및 이벤트

ProEssentials는 데이터 핫스팟 클릭, 커서 추적, 줌 변경 및 사용자 정의 이벤트 처리를 포함한 사용자 상호작용에 대한 .NET 이벤트를 발생시킵니다. 주요 패턴에는 픽셀-데이터 좌표 변환(ConvPixelToGraph), 클릭 가능한 차트 영역을 위한 핫스팟 감지, 구성 가능한 툴팁 스타일의 커서 추적이 포함됩니다. 마우스 휠 줌, 대화형 데이터 스크롤링 및 팝업 메뉴 사용자 정의를 지원합니다.

Multi-Axis Charts

다축 차트: 단일 차트에 여러 Y축을 표시합니다. 각 축은 자체 스케일, 그리드 숫자, 레이블 및 색상을 갖습니다. 서브셋은 MultiAxisStyle 및 WorkingAxis 속성을 통해 축에 할당됩니다. 분리된 그래프 영역 및 겹치는 축 레이아웃 모두를 지원합니다.

Zoom and Scroll

줌 및 스크롤: Pesgo는 세 가지 독립적인 축 제어 수준을 지원합니다 — 자동 스케일, 수동 스케일, 줌 제어. 줌은 수동 값을 변경하지 않고 수동 스케일링 위에 오버레이됩니다. Pego는 스크롤바 기반 탐색을 위해 PointsToGraph를 사용합니다. 대화형 줌은 AllowZooming 열거형과 마우스 휠 구성을 통해 제어됩니다.

Date/Time Axes

날짜/시간 축: ProEssentials는 직렬 날짜 값을 통해 날짜/시간 X축을 지원합니다. PeData에서 DateTimeMode를 활성화한 다음 날짜를 OLE Automation double로 전달합니다. 균일 시간 간격(DeltaX)과 가변 시간 간격(DeltasX 배열) 모두를 지원합니다.

Styling and Appearance

시각적 스타일링: 색상은 시리즈별 SubsetColors, 그래프 영역 색상, 축 색상 및 그리드 라인 투명도가 있는 PeColor 속성 그룹을 통해 제어됩니다. ViewingStyle 및 QuickStyle 열거형을 통한 빠른 시각 테마. 글꼴 크기는 비례 제어 시스템을 사용합니다. 데이터 시각화 기능에는 3D 그림자 효과, 구성 가능한 포인트 크기, 라인 스타일 및 막대 너비/간격 제어가 포함됩니다.

Printing and Export

인쇄 및 내보내기: PeFunction.PrintGraph() 및 PeFunction.PrintGraphEx()를 통한 프로그래밍 방식 인쇄와 방향 및 여백 제어. BMP, JPG, PNG, EMF, SVG 형식으로의 이미지 내보내기. 클립보드 복사 지원. 모든 내보내기는 일관된 출력을 위해 현재 렌더 엔진을 따릅니다.

AI 지원 개발

ProEssentials에는 모든 AI 어시스턴트에게 완전한 API에 대한 온디맨드 액세스를 제공하는 Python 기반 AI 지원 시스템이 포함되어 있습니다 — 잘못된 속성 경로를 방지하는 Ground Truth 검증 기능을 갖추고 있습니다. 이 시스템에는 pe_query.py(15개 이상의 쿼리 명령), 32개의 지식 파일, 116개의 코드 예제, 1,104개의 속성, 1,260개의 메서드 및 167개의 열거형을 포함하는 구조화된 JSON 데이터가 포함됩니다.

AI 코드 어시스턴트 설정

지식 파일 다운로드

이 AI 지식 파일은 ProEssentials 설치에 포함되어 있으며 여기에서도 다운로드할 수 있습니다. Claude AI 프로젝트 또는 선호하는 AI 도구에 로드하여 AI 지원 ProEssentials 개발에 활용하세요.

Architecture & Fundamentals

Chart Object Patterns

Axes & Scaling
Annotations & Labels

Interaction & Events

Appearance & Output

지원 플랫폼

ProEssentials는 C# .NET 8.0(WinForms 및 WPF), VB.NET, MFC C++, Embarcadero Delphi, C++ Builder VCL 및 Excel/Access OCX 개발을 지원합니다. 배포에는 애플리케이션과 함께 단일 네이티브 DLL(PEGRP64H.DLL)이 필요합니다. .NET 래퍼 어셈블리는 로컬 NuGet 패키지 또는 직접 어셈블리 참조로 사용할 수 있습니다. 최상의 성능을 위해 ProEssentials x64 어셈블리를 권장합니다.

우리의 미션

귀사의 조직과 최종 사용자들에게 가장 쉽고 가장 전문적인 혜택을 제공함으로써 귀사께서 성공하시는 것이 당사의 최우선 목표입니다.

저희는 엔지니어입니다

프로에센셜은 자체 차트 컴포넌트가 필요한 전기 공학 전문가들로부터 태어났습니다. 프로에센셜을 사용하는 탑 엔지니어링 기업들 명단에 참여히세요.

정말 감사합니다

프로에센셜 고객이 되어주셔서 감사드리며, 프로에센셜 차트 제작 엔진을 연구해주셔서 감사드립니다.