Skip to content
Closed
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
21d1a62
Initial plan
Copilot Jul 27, 2025
c9ba564
Y軸ズーム・パン機能の実装完了
Copilot Jul 27, 2025
a99575b
Y軸ズーム機能の実装完了とドキュメント更新
Copilot Jul 27, 2025
8b2008e
Y軸ズーム・パン機能の改良完了: FPS表示削除とX軸パン機能追加
Copilot Jul 27, 2025
4ada55e
追加改良のナレッジドキュメント作成
Copilot Jul 27, 2025
d0e6660
ビルドエラー修正: ScottPlot 5.x非対応のConfigurationプロパティ削除
Copilot Jul 27, 2025
7d08a55
ナレッジドキュメント更新: ScottPlot 5.x API問題の解決過程を記録
Copilot Jul 27, 2025
7148651
上下左右スクロール機能の実装: マウスホイール+修飾キーによる詳細操作機能を追加
Copilot Jul 27, 2025
e602cab
左クリックドラッグによるスクロール機能の実装
Copilot Jul 27, 2025
f05920e
FPS表示抑制機能の復元: ScottPlot 5.x対応の描画品質制御を実装
Copilot Jul 27, 2025
6d10316
FPS表示制御機能の最終実装: RenderManagerイベントとWPF最適化を追加
Copilot Jul 27, 2025
faf67d3
null参照警告の修正と左クリックドラッグ動作の明確化
Copilot Jul 27, 2025
14de2c3
左クリックドラッグ動作の修正: マウス状態の確実な管理とリーブイベント対応
Copilot Jul 27, 2025
33de2c2
左クリックドラッグ終了問題の修正とUIボタンの初期表示対応
Copilot Jul 27, 2025
73b1df5
左クリックドラッグの固定モード問題を修正: MouseDownイベントのボタン判定とドラッグ状態管理を改善
Copilot Jul 27, 2025
b478266
水平スクロール固定問題の修正: ドラッグ開始点の継続更新を防止し軸移動の制御を改善
Copilot Jul 27, 2025
77b69e8
フリー移動モード実装: 左クリックでグラフ移動の切り替え機能を追加
Copilot Jul 27, 2025
f2fc11b
未使用フィールドの警告修正: 旧ドラッグシステムの不要なフィールドを削除してCS0414警告を解消
Copilot Jul 27, 2025
a3f891e
フリー移動モード時のカーソルを手のアイコンに変更
Copilot Jul 27, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 126 additions & 0 deletions knowledge/70-Y軸ズーム機能の実装.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
# 70-Y軸ズーム機能の実装

## 概要
Performance Monitor AnalyzerのグラフでY軸のズーム・パン機能を実装しました。従来の時間軸ズームから、Y軸の詳細化による分析を可能にしています。

## 実装した機能

### 1. Y軸ズーム機能
- **マウスホイール**でY軸の範囲をズームイン/アウト
- ズームイン: Y軸範囲を狭める(細かな値の動きを確認)
- ズームアウト: Y軸範囲を広げる(全体の傾向を確認)
- 最小ズーム範囲: 1.0
- 最大ズーム範囲: 1000.0
- ズーム係数: 10%

### 2. Y軸パン(ドラッグ)機能
- **中ボタンドラッグ**または**Ctrl+左ボタンドラッグ**でY軸範囲を上下移動
- 例: 95-100の範囲を96-91に移動
- ドラッグ中はカーソルが上下矢印に変化

### 3. リセット機能
- **Y軸リセットボタン**: Y軸範囲を0-100にリセット
- **ズームリセットボタン**: 時間範囲とY軸範囲の両方をリセット
- キーボードショートカット対応

### 4. キーボードショートカット
- **F5**: Y軸範囲をリセット
- **Ctrl+R**: 全体リセット(時間範囲とY軸)
- **Ctrl+C**: グラフをクリップボードにコピー

## 技術実装詳細

### コード変更箇所

#### 1. 変数追加 (MainWindow.xaml.cs)
```csharp
// Y軸ズーム機能関連
private double _yAxisMin = 0.0;
private double _yAxisMax = 100.0;
private const double ZOOM_FACTOR = 0.1;
private const double MIN_ZOOM_RANGE = 1.0;
private const double MAX_ZOOM_RANGE = 1000.0;

// Y軸ドラッグ機能関連
private bool _isYAxisDragging = false;
private double _yAxisDragStartValue = 0.0;
private Point _yAxisDragStartPoint;
```

#### 2. イベントハンドラー追加
- `PerformanceChart_MouseWheel`: ホイールズーム処理
- `PerformanceChart_MouseDown`: ドラッグ開始
- `PerformanceChart_MouseMove`: ドラッグ中の移動
- `PerformanceChart_MouseUp`: ドラッグ終了

#### 3. メソッド変更・追加
- `EnsureYAxisFixedRange()` → `EnsureYAxisRange()`: 動的範囲管理
- `ResetYAxisRange()`: Y軸範囲リセット
- `ResetYAxis_Click()`: Y軸リセットボタンイベント

#### 4. UI要素追加 (MainWindow.xaml)
- Y軸リセットボタン
- 操作説明テキスト
- ツールチップの更新

## 動作仕様

### ズーム動作
1. マウスカーソルがグラフ領域内にある時のみ動作
2. ホイール上回転: ズームイン(範囲を狭める)
3. ホイール下回転: ズームアウト(範囲を広げる)
4. ズーム中心点は現在の範囲の中央

### ドラッグ動作
1. 中ボタンまたはCtrl+左ボタンでドラッグ開始
2. 上下ドラッグでY軸範囲を移動
3. ドラッグ中はカーソルが上下矢印に変化
4. マウス離しでドラッグ終了

### 制限事項
- 最小ズーム範囲: 1.0未満にはズームできない
- 最大ズーム範囲: 1000.0を超えてズームアウトできない
- プロット領域外ではズーム・ドラッグ無効

## テスト方法(Windows環境)

### 基本動作テスト
1. Performance Monitor Analyzerを起動
2. BLGファイルを読み込み
3. カウンターを選択してグラフ表示
4. 以下の操作を確認:
- マウスホイールでY軸ズーム
- 中ボタンドラッグでY軸パン
- Y軸リセットボタンの動作
- キーボードショートカット

### 境界値テスト
1. 最小ズーム範囲(1.0)まで縮小
2. 最大ズーム範囲(1000.0)まで拡大
3. Y軸範囲の上下移動の限界確認

### UI/UXテスト
1. ツールチップの表示確認
2. カーソル変化の確認
3. ログメッセージの確認
4. ボタンの有効/無効状態

## エラーハンドリング
- マウスイベント処理中の例外キャッチ
- ログ出力による動作追跡
- 不正な値の補正処理

## 今後の拡張予定
- X軸(時間軸)のマウス操作対応
- ズーム履歴機能
- プリセットズーム機能
- ミニマップ表示

## 関連ファイル
- `src/PerformanceMonitorAnalyzer/MainWindow.xaml.cs`
- `src/PerformanceMonitorAnalyzer/MainWindow.xaml`

## 参考情報
- ScottPlot.WPF v5.0.41使用
- .NET 8.0 WPFアプリケーション
- Windows専用機能
18 changes: 17 additions & 1 deletion src/PerformanceMonitorAnalyzer/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -467,6 +467,13 @@
Foreground="DarkGreen"
FontWeight="Bold"
Margin="5"/>
<TextBlock HorizontalAlignment="Center" FontSize="11" Foreground="DarkBlue" Margin="5">
<Run Text="🔧 Y軸操作: "/>
<Run Text="マウスホイール" FontWeight="Bold"/>
<Run Text="でズーム、"/>
<Run Text="中ボタンドラッグ" FontWeight="Bold"/>
<Run Text="で範囲移動"/>
</TextBlock>
</StackPanel>

<!-- グラフ操作ボタン -->
Expand All @@ -480,7 +487,16 @@
Foreground="#F57C00"
Padding="10,5"
Margin="5"
ToolTip="時間範囲とズーム倍率を初期状態にリセットします"/>
ToolTip="時間範囲とY軸ズーム倍率を初期状態にリセットします (Ctrl+R)"/>
<Button x:Name="ResetYAxisButton"
Content="📏 Y軸をリセット"
Click="ResetYAxis_Click"
Background="#F3E5F5"
BorderBrush="#7B1FA2"
Foreground="#7B1FA2"
Padding="10,5"
Margin="5"
ToolTip="Y軸の範囲を0-100にリセットします (F5)"/>
<Button x:Name="CopyGraphButton"
Content="📋 グラフをクリップボードにコピー"
Click="CopyGraphToClipboard_Click"
Expand Down
Loading