*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

<C#>
「画像をマウスホイールでスクロールしたり、マウスホイールで回転をして表示<ピクチャボックス上での扱い方。ユーザーコントロール版>」のプロジェクト No.1のコード No.4


*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

.






元のページ


元ページ「<C# > 画像をマウスホイールでスクロールしたり、マウスホイールで回転をして表示<ピクチャボックス上での扱い方。ユーザーコントロール版>」のプロジェクト No.1
http://note.chiebukuro.yahoo.co.jp/detail/n188641

 

記述量上限の制限で、ページを分けて記述しています。




本ページの前のページ


「画像をマウスホイールでスクロールしたり、マウスホイールで回転をして表示<ピクチャボックス上での扱い方。ユーザーコントロール版>」のプロジェクト No.1のコード No.3
http://note.chiebukuro.yahoo.co.jp/detail/n188734


記述量上限の制限で、ページを分けて記述しています。







本ページの次のページ


「画像をマウスホイールでスクロールしたり、マウスホイールで回転をして表示<ピクチャボックス上での扱い方。ユーザーコントロール版>」のプロジェクト No.1のコード No.5
http://note.chiebukuro.yahoo.co.jp/detail/n188736

 

記述量上限の制限で、ページを分けて記述しています。









はじめに


元ページの「<C#> 画像をマウスホイールでスクロールしたり、マウスホイールで回転をして表示<ピクチャボックス上での扱い方。ユーザーコントロール版>」におけるコードをここに記述します。








UserControl1クラスのコード





using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


// 画像をマウスホイールでスクロールしたり、マウスホイールで回転をして表示
// <ピクチャボックス上での扱い方。ユーザーコントロール版>
namespace RotateAndMoveImageByMouseWheel_PicBox_Control
{
    public partial class UserControl1
    {


        //===================================
        // マウスホイールの動作を制御する各種メソッド
        //===================================

 

        //==============
        // スクロール結果取得メソッド
        // マウスホイールをスクロールした結果を取得する。
        // 第1引数: スクロール時に起動するイベントプロシージャの第
        //           2引数を、本メソッドの本引数に入力指定
        // 第2引数: マウスホイールの回転で増減させる量
        // 第3引数: 量の最大値上限
        // 第4引数: 量の最小値下限
        // 第5引数: ホイールのスクロールイベント発生時のホイール量増分
        public void GetResultWhichScrolled(
            System.Windows.Forms.MouseEventArgs e,
            ref int Wheel_Value,
            int Max_Value,
            int Min_Value,
            int Wheel_Step)
        {

            // e.Deltaで、マウス ホイールの回転回数を表す符合付きの数値を取得。
            // それをWheelValueに増加
            if (e.Delta >= 0)
            {
                Wheel_Value += Wheel_Step;
            }
            else
            {
                Wheel_Value -= Wheel_Step;
            }


            // 最大値を超えた場合のエラー処理
            if (Wheel_Value > Max_Value)
            {
                // 最大値に強制修正
                Wheel_Value = Max_Value;
            }
            // 最小値より小さくなった場合のエラー処理
            else if (Wheel_Value < Min_Value)
            {
                // 最小値に強制修正
                Wheel_Value = Min_Value;
            }
            // 特に範囲を超えていない場合
            {
                // 未処理
            }

        }

 

 

        //==============
        // スクロール範囲上限下限取得メソッド
        // マウスホイールをスクロールする範囲の上限、下限を取得する。
        // 第1引数: クライント領域の横幅
        // 第2引数: クライント領域の縦幅
        // 第3引数: 表示対象画像
        // 第4引数: 画像の範囲オーバー許可
        //           true:範囲オーバー許可 / false:範囲オーバー不可
        // 第5引数: 横スクロール時のホイール量の最大値上限
        // 第6引数: 横スクロール時のホイール量の最小値下限
        // 第7引数: 縦スクロール時のホイール量の最大値上限
        // 第8引数: 縦スクロール時のホイール量の最小値下限
        public void GetScrollLimit(
            int Client_Width,
            int Client_Height,
            System.Drawing.Bitmap Bitmap_Img,
            bool Permit_Protruding,
            out int H_Scroll_Max,
            out int H_Scroll_Min,
            out int V_Scroll_Max,
            out int V_Scroll_Min)
        {
            H_Scroll_Max = 0;
            H_Scroll_Min = 0;
            V_Scroll_Max = 0;
            V_Scroll_Min = 0;


            // 画像がまだ設定されていない場合
            if (Bitmap_Img == null) return;


            // 画像の範囲オーバーを許可されている場合
            if (Permit_Protruding == true)
            {
                H_Scroll_Max = Client_Width;
                H_Scroll_Min = -1 * Bitmap_Img.Width;
                V_Scroll_Max = Client_Height;
                V_Scroll_Min = -1 * Bitmap_Img.Height;
            }
            // 画像の範囲オーバーを許可されている場合
            else
            {
                H_Scroll_Max = Client_Width - Bitmap_Img.Width;
                if (H_Scroll_Max < 0)
                {
                    H_Scroll_Min = H_Scroll_Max;
                    H_Scroll_Max = 0;
                }
                else
                {
                    H_Scroll_Min = 0;
                }

                V_Scroll_Max = Client_Height - Bitmap_Img.Height;
                if (V_Scroll_Max < 0)
                {
                    V_Scroll_Min = V_Scroll_Max;
                    V_Scroll_Max = 0;
                }
                else
                {
                    V_Scroll_Min = 0;
                }
            }

        }

 

        // ==============
        // スクロール結果取得メソッド
        // マウスホイールをスクロールした結果を取得する。
        // 第1引数: スクロール時に起動するイベントプロシージャの第
        //           2引数を、本メソッドの本引数に入力指定
        // 第2引数: マウスホイールの回転で増減させる量
        // 第3引数: 量の最大値上限
        // 第4引数: 量の最小値下限
        // 第5引数: ホイールのスクロールイベント発生時のホイール量増分
        public void GetResultWhichScrolled(
            System.Windows.Forms.MouseEventArgs e,
            ref double Wheel_Value,
            double Max_Value,
            double Min_Value,
            double Wheel_Step)
        {

            // e.Deltaで、マウス ホイールの回転回数を表す符合付きの数値を取得。
            // それをWheelValueに増加
            if (e.Delta >= 0)
            {
                Wheel_Value += Wheel_Step;
            }
            else
            {
                Wheel_Value -= Wheel_Step;
            }


            // 最大値を超えた場合のエラー処理
            if (Wheel_Value > Max_Value)
            {
                // 最大値に強制修正
                Wheel_Value = Max_Value;
            }
            // 最小値より小さくなった場合のエラー処理
            else if (Wheel_Value < Min_Value)
            {
                // 最小値に強制修正
                Wheel_Value = Min_Value;
            }
            // 特に範囲を超えていない場合
            {
                // 未処理
            }

        }


    }
}




 

さいごに


本ページの内容説明については、元ページを参照して下さい。