開発者ガイド

.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 のあらゆる実装は、5つのチャートオブジェクトから1つを選ぶことから始まります。この選択が実装全体 — データモデル、軸の挙動、プロット方法、利用可能な機能 — を決定します。データと可視化の目的に基づいて選んでください。

Pego — Graph Object 37例

カテゴリー型・連続型 X 軸データのための標準 .NET チャートコントロール。Bar、Line、Area、Stacked Bar、Stacked Area、OHLC、High-Low-Close、Ribbon など計27のプロット方法をサポート。X 軸ラベルは PointLabels 文字列配列で設定します — 数値の X データ配列は不要です。

用途: ダッシュボード、棒グラフ、金融 OHLC/ローソク足、カテゴリー比較、等間隔の時系列。

Pesgo — 科学技術グラフオブジェクト 50例

連続数値 X 軸データのための科学チャートコンポーネント。Scatter、Line、Spline、Bubble、Area、Contour/HeatMap など計26のプロット方法をサポート。PeData.X[subset, point] 値による明示的な X データ配列が必要です。ジャグデータ(ポイント数が異なるサブセット)、コンター レンダリング、そして最も豊富なリアルタイム ストリーミング オプションをサポートします。

用途: 科学データの可視化、XY 散布図、リアルタイム ストリーミング チャート、不等間隔の時系列、コンターおよびヒートマップ チャート、バブルチャート。

Pe3do — 3D Scientific Graph 18例

X、Y、Z のデータ配列と Direct3D レンダリングを使い、3D サーフェス、ワイヤーフレーム、3D コンター、3D 棒グラフ、3D 散布図をレンダリングします。Y が垂直(標高)軸です。AppendData(スクロールするサーフェス)または AppendSubset(ウォーターフォール)によるリアルタイム 3D サーフェス アニメーションをサポートします。

用途: 3D サーフェス プロット、ワイヤーフレーム可視化、地形コンター、3D ウォーターフォール チャート、地形レンダリング。

Pepso — 極座標 / Smith オブジェクト 7例

角度データのための極座標チャートコンポーネント。極座標ライン、極座標散布図、レーダー/スパイダー チャート、ローズ ダイアグラム、RF エンジニアリング向けスミスチャートをサポート。データは角度と大きさで表現します。

用途: 極座標プロット、レーダー/スパイダー チャート、ローズ ダイアグラム、スミスチャート、RF インピーダンス可視化。

Pepco — 円グラフオブジェクト 4例

円グラフ、ドーナツグラフ、マルチリング チャートを、切り出しスライス、パーセント ラベル、凡例統合付きでレンダリングします。スライス値は単一のデータ配列です。

用途: 円グラフ、ドーナツグラフ、構成比データの可視化。

データハンドリング パターン

ProEssentials は、データセットのサイズと性能要件に応じて選べる6つのデータ読み込みパターンを提供します。データは Subsets(系列/ライン)× Points(データ値)として構成されます。まず PeData.Subsets と PeData.Points を設定し、その後データ配列を投入します。ベストプラクティス: データの準備はチャート API コードから分離してください — まずデータソースから配列を構築し、完成した配列を ProEssentials に渡します。

パターン1: 直接インデックス 1万ポイント未満

PeData.Y[subset, point] = value で値を1つずつ代入します。Pesgo では PeData.X も設定します。Pe3do では PeData.Z も設定します。シンプルで明快 — デモや小さな静的データセットに最適です。

パターン2: FastCopy 25万ポイント未満

コード内で float 配列を構築し、PeData.Y.FastCopyFrom(array) を呼びます。要素ごとの相互運用オーバーヘッドを回避します。1次元、2次元、ジャグ配列のオーバーロードがあります。

パターン3: UseDataAtLocation 25万ポイント以上、ゼロコピー

チャートをあなたのマネージド配列へ直接向けます — データコピーは一切ありません。PeData.Y.UseDataAtLocation(array, bufferSize) を呼びます。超大規模データセット、複数チャート間でのデータ共有、リアルタイム シナリオに最適です。

パターン4: AppendData ストリーミング / リアルタイム

PeData.Y.AppendData(newValues, amountPerSubset) を呼んで新しいデータをプッシュします。既存データは自動的にシフトされます。CircularBuffers と組み合わせれば、10万ポイント以上でもリングバッファ性能が得られます。

パターン5: BindData データベース / DataReader

PeData.Y.BindData() で ADO.NET の DataReader や DataView から直接読み込みます。データベース駆動のチャートアプリケーションに便利です。

パターン6: ジャグデータ 可変長サブセット

サブセットごとにポイント数が異なる場合は PeData.JaggedData = true を有効にします。RenderEngine = Direct2D が必要です。3つのサブメソッド: 直接インデックス、CopyFromJagged、UseJaggedDataAtLocation。

DuplicateData 最適化: 全サブセットが同一の X データを共有する場合(Pesgo でよくあるケース)、PeData.DuplicateDataX = DuplicateData.PointIncrement を設定します。X データはサブセット0にのみ与えれば、チャートが全サブセットでそれを再利用し、冗長なストレージを排除します。

リアルタイム ストリーミング

ProEssentials は、シンプルなストリップチャートから数百万ポイントの GPU アクセラレーション高頻度ストリーミングまで、5つのリアルタイム更新戦略をサポートします。

必須セットアップ(すべてのリアルタイム チャート共通): PeConfigure.PrepareImages = true、PeConfigure.CacheBmp = true(静的要素をキャッシュしてフリッカーフリーの再描画を実現)、PeSpecial.AutoImageReset = false(自動ダーティチェックをスキップ)。ティックごとにデータセット全体の最小/最大スキャンを避けるため、手動の軸スケーリングを強くお勧めします。

AppendData ストリップチャート

既存データをシフトし、端に新しいデータを追加します。最も一般的なリアルタイム パターンです。Pego、Pesgo、Pe3do で動作します。CircularBuffers と組み合わせれば、10万ポイント以上のリングバッファ性能が得られます。

FastCopyFrom 全置換

ティックごとに全データを置き換えます。バッファ全体が同時に変化するオシロスコープ型の波形表示に最適です。例: 4サブセット × 10万ポイント = ティックあたり40万値を置換。

直接インデックス循環書き込み

インデックスで直接書き込み、バッファ末尾でカウンターをラップします。シフトもアペンドもなし — その場で上書きするだけです。循環型の表示に適しています。

AppendSubset ウォーターフォール

Pe3do 専用。ティックごとに完全な新サブセットを追加し、3D ウォーターフォール可視化を生成します。各ティックがウォーターフォールに新しい行を加えます。

UseDataAtLocation ゼロコピー

アプリケーションが自身のメモリを管理し、チャートはそれを直接読みます。コピーのオーバーヘッドはありません。CircularBuffers および AppendData と組み合わせれば、ProEssentials が循環ポインタを使ってあなたのローカルメモリへ追記します。例: 4サブセット × 200万ポイントをゼロコピーで。

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 ラインデータをロスレスで前段フィルターし、その後最終シェーダーがシーンを構築します。25万ポイント以上のラインチャートで劇的な速度改善。ComputeShader = true と併用してください。

CircularBuffers

PeData.CircularBuffers = true。AppendData 呼び出しのたびにメモリをシフトする代わりに、リングバッファ ポインタを使います。10万ポイント以上のリアルタイム ストリーミングに不可欠です。Pego、Pesgo、Pepso、Pe3do で動作します。

StagingBuffers

PeData.StagingBufferX/Y/Z = true。データ配列の GPU 側コピーを保持し、効率的な CPU→GPU 転送パイプラインを実現します。リアルタイム レンダリング中に更新される軸ごとに有効化してください。

レンダリング エンジン

3つのレンダーエンジン: Direct2D、Direct3D、GdiPlus。Direct3D は ComputeShader と完全な GPU アクセラレーションを可能にします。Direct2D はジャグデータと高度な 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

2つの API レイヤー: .NET プロパティ インターフェイスと C++ DLL インターフェイスは相互に交換可能です — どちらも同じネイティブ エンジンへアクセスします。C#/VB/WPF では .NET が標準です。DLL インターフェイスは MFC C++、Delphi、特殊なケースで使われます。PeSpecial.HObject が相互運用シナリオ向けにネイティブ DLL ハンドルを提供します。

アノテーションとラベル

ProEssentials は、参照線、テキスト マーカー、コールアウト ラベル、図形、データテーブルをあらゆるチャートに追加できる包括的なアノテーション システムを提供します。

Line Annotations

Line アノテーション: データ座標における水平・垂直の参照線。水平線は PeAnnotation.Line.YAxis[i]、垂直線は PeAnnotation.Line.XAxis[i] で設定します。16以上の線スタイル、アノテーションごとの色、テキスト ラベル、ズームウィンドウでの表示制御をサポートします。

Graph Annotations

Graph アノテーション: 任意のデータ座標にシンボル、テキスト、線、図形、ビットマップを配置します。角度付きテキスト、連結線、テキスト ドッジング(自動回避)、複合パターン、ビットマップ、アノテーションごとの書式設定をサポート。チャートデータから独立しています — コールアウト ラベル、オーバーレイ マーカー、装飾要素に使えます。

Table Annotations

Table アノテーション: 軸領域の内側、チャートの端、またはデータポイントに揃えて配置できる、最大20個の独立したテーブル要素。セル個別の書式設定付きで複数列・複数行レイアウトをサポート。カスタム凡例、データ サマリー、情報パネルに使われます。

Quick Annotations

Quick アノテーション: 完全な画像再構築を回避する最適化パスでレンダリングされる一時的なグラフ アノテーション。計測オーバーレイ、ドラッグ矩形、十字カーソル、マウス移動のたびに更新される一時的な UI に最適です。

ユーザー操作とイベント

ProEssentials は、データ ホットスポットのクリック、カーソル トラッキング、ズーム変更、カスタム イベント処理など、ユーザー操作に対する .NET イベントを発火します。主要パターンには、ピクセル→データ座標変換(ConvPixelToGraph)、クリック可能なチャート領域のためのホットスポット検出、設定可能なツールチップ スタイル付きカーソル トラッキングがあります。マウスホイール ズーム、インタラクティブなデータ スクロール、ポップアップ メニューのカスタマイズをサポートします。

Multi-Axis Charts

マルチ軸チャート: 1つのチャートに複数の Y 軸を表示します。各軸が独自のスケール、グリッド数値、ラベル、色を持ちます。サブセットは MultiAxisStyle と WorkingAxis プロパティで軸に割り当てます。グラフ領域を分離するレイアウトと、軸を重ねるレイアウトの両方をサポートします。

Zoom and Scroll

ズームとスクロール: Pesgo は3つの独立した軸制御レベル — 自動スケール、手動スケール、ズーム制御 — をサポートします。ズームは手動値を変更せずに手動スケーリングへオーバーレイされます。Pego はスクロールバーによるナビゲーションに PointsToGraph を使います。インタラクティブ ズームは AllowZooming 列挙型とマウスホイール設定で制御します。

Date/Time Axes

日付/時刻軸: ProEssentials はシリアル日付値を通じて日付/時刻 X 軸をサポートします。PeData の DateTimeMode を有効にし、日付を OLE オートメーションの double として渡します。均一な時間ステップ(DeltaX)と可変の時間ステップ(DeltasX 配列)の両方をサポートします。

Styling and Appearance

ビジュアル スタイリング: 色は PeColor プロパティ グループで制御します — 系列ごとの SubsetColors、グラフ領域の色、軸の色、グリッド線の透明度。ViewingStyle と QuickStyle 列挙型によるクイック ビジュアル テーマ。フォント サイズは比例制御システムを使います。データ可視化機能には、3D シャドウ効果、設定可能なポイント サイズ、線スタイル、バーの幅/間隔制御が含まれます。

Printing and Export

印刷とエクスポート: PeFunction.PrintGraph() と PeFunction.PrintGraphEx() による、向きと余白の制御付きプログラム印刷。BMP、JPG、PNG、EMF、SVG 形式への画像エクスポート。クリップボード コピー対応。すべてのエクスポートは現在のレンダーエンジンに従い、一貫した出力を生成します。

AI 支援開発

ProEssentials には、あらゆる AI アシスタントに完全な API へのオンデマンド アクセスを提供する Python 駆動の AI 支援システムが含まれます — 幻覚プロパティパスを防ぐ正解データ検証付きです。システムには pe_query.py(15以上のクエリコマンド)、32のナレッジファイル、116のコード例、そして全インターフェイスにわたる1,200以上のプロパティ、70以上のメソッド、169の列挙型をカバーする構造化 JSON データが含まれます。

AI コードアシスタントのセットアップ

ナレッジファイルのダウンロード

これらの AI ナレッジファイルは ProEssentials のインストールに含まれており、ここからもダウンロードできます。Claude AI Projects やお好みの AI ツールに読み込ませて、AI 支援による ProEssentials 開発にご利用ください。

Architecture & Fundamentals

Chart Object Patterns

Axes & Scaling
Annotations & Labels

Interaction & Events

Appearance & Output

サポート対象プラットフォーム

ProEssentials は、C# .NET 8 および .NET 10(WinUI、WPF、WinForms)、VB.NET、MFC C++、Embarcadero Delphi、C++ Builder VCL、ActiveX/Access OCX による開発をサポートします。配布時には、アプリケーションと一緒に単一のネイティブ DLL(PEGRP64I.DLL)を配置するだけです。.NET ラッパーアセンブリは、ローカルの NuGet パッケージとして、または直接のアセンブリ参照として利用できます。最良のパフォーマンスを得るには、ProEssentials の x64 アセンブリを推奨します。

私たちの使命

御社とエンドユーザーに最も簡単で最もプロフェッショナルな価値を提供することで、お客様の成功を最優先目標とします。

私たちはエンジニアです

ProEssentials は、自らのチャートコンポーネントを必要としたプロの電気エンジニアから生まれました。ProEssentials を使う一流エンジニアリング企業の長いリストに加わってください。

ありがとうございます

ProEssentials のお客様であることに感謝するとともに、ProEssentials チャートエンジンをご検討いただきありがとうございます。