C#でのクリックした箇所の拡大縮小処理が通りません
clsConst.csで拡大縮小処理の定義はしてあり、Main.csでそれを呼び出し、そこにクリックしたときのクリックした箇所の拡大縮小の処理を付け加えています
〈クリックしたときの拡大縮小の流れはこうです〉
1クリックした座標の取得
2拡大縮小
3拡大縮小後の座標の取得(1の変数に拡大縮小倍率(m_ratio)をかける))
4スクロールバーを3で取得した座標へ移動させる
なにか加えるところ or 変更するところはありますか
C#
1clsConst.csでのChangeZoom(拡大縮小)の定義です 2 /// <summary> 3 /// 画像の拡大モードを変更する 4 /// </summary> 5 /// <param name="e">マウスイベントの情報</param> 6 /// <param name="zoomMode">表示モード</param> 7 public static void ChangeZoom(MouseEventArgs e, ref int zoomMode) 8 { 9 if (Control.ModifierKeys == Keys.Control) 10 { 11 if (e.Button == MouseButtons.Left) 12 { 13 // 拡大 14 if ((int)clsConst.ZOOM_MODE.FULL_SIZE < zoomMode) 15 { 16 zoomMode--; 17 } 18 } 19 else if (e.Button == MouseButtons.Right) 20 { 21 // 縮小 22 if (zoomMode < (int)clsConst.ZOOM_MODE.FIT_TO_PIC) 23 { 24 zoomMode++; 25 } 26 } 27 } 28 } 29 30つづいてMain.csでの拡大縮小処理です 31 32/// <summary> 33 /// ピクチャーボックスクリック(画像サイズ変更) 34 /// </summary> 35 /// <param name="sender"></param> 36 /// <param name="e"></param> 37 private void picMaster_MouseClick(object sender, MouseEventArgs e) 38 { 39 if (picMaster.Image != null) 40 { 41 double a = e.X; 42 double b = e.Y; 43 44 { 45 clsConst.ChangeZoom(e, ref m_zoomMode); 46 m_ratio = clsConst.CalcRatio(m_image.Size, pnlMaster.Size, m_zoomMode); 47 clsConst.ChangePictureSize(picMaster, m_image, m_ratio); 48 } 49 50 //X座標を取得する 51 double na = a * m_ratio; 52 //Y座標を取得する 53 double nb = b * m_ratio; 54 55 //スクロールバー移動 56 this.AutoScrollPosition = new Point((int)na, (int)nb); 57 } 58 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。