「<C#> マウスのドラッグで、キャラクター画像を移動させる画像処理を、マルチスレッドで行なう」のコード No.3

                                                    <h2>*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*</h2>

C#
「マウスのドラッグで、キャラクター画像を移動させる画像処理を、マルチスレッドで行なう」のコード No.3


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

.






元のページ


元ページ「<C#> マウスのドラッグで、キャラクター画像を移動させる画像処理を、マルチスレッドで行なう」

http://note.chiebukuro.yahoo.co.jp/detail/n165465

 

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


 


 

本ページの前のページ


「マウスのドラッグで、キャラクター画像を移動させる画像処理を、マルチスレッドで行なう」のコード No.2
http://note.chiebukuro.yahoo.co.jp/detail/n170404

 

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





本ページの次のページ


「マウスのドラッグで、キャラクター画像を移動させる画像処理を、マルチスレッドで行なう」のコード No.4
http://note.chiebukuro.yahoo.co.jp/detail/n170410

 

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








はじめに


元ページの「<C#> マウスのドラッグで、キャラクター画像を移動させる画像処理を、マルチスレッドで行なう」におけるコードをここに記述します。








画像処理クラスのコード




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


// マウスのドラッグで、キャラクター画像を移動させる画像処理を、マルチスレッドで行なう。
namespace DragThreadSimple1
{

    // ************************************
    // ************************************
    // 画像処理クラス
    //  本クラスは、画像移動を行なうスレッドを管理します。
    //  なお、本クラスは、画像移動等のグラフィック処理関係の要求受付を行な
    //  うクラスから呼び出されて実行されます。
    // ************************************
    // ************************************
    public partial class GraphicsThread
    {

        //===================================
        // グラフィックス処理関連のプロパティ等
        //===================================


        // 要求電文処理メソッド用デリゲート
        //  --- 非同期処理を実行するメソッドをどのような引数にし
        //      たいのか、それを宣言するデリゲートです。
        public delegate System.Drawing.Image GraphicsMethodDelegate(
            RequiredCall Required_Call);

 

 

        // ************************************************
        // 要求電文処理スレッド用メソッド
        // (描画処理用メソッド)
        //  --- 受け付けで受理された要求電文に対して、具体的な処理を行なうメソッ
        //      ドです。このサンプルでは、要求電文の情報に従い、背景を作成し、そ
        //      の上に対象画像(キャラクター画像等)を貼り付ける処理を行なってい
        //      ます。すなわち、描画する画像の作成を行なっています。
        //      なお、本メソッド(電文処理部)は、マルチスレッドとして実行されるメ
        //      ソッドです。すなわち、要求受理があるたびにスレッドが起動し、本メ
        //      ソッドが実行されます。
        // 第1引数: 要求電文(描画対象画像等の情報が格納されている)
        // 戻り値: 本メソッドで作成された画像
        // ************************************************
        System.Drawing.Image MoveImageProcessing(
            RequiredCall Required_Call)
        {

            // スレッドに行なわせたい処理を記述する。
            // ここでは、画像移動を行なわせるものとする。

 

            // AllDoneをシグナル状態にする。
            // すなわち、接続待ちスレッドのロックを解除して、接続待ちスレッドの実行再開の許可をする。
            AllDone.Set();


            // 白紙のイメージ画像を生成
            System.Drawing.Bitmap Background_Img = CreateImage(
                Required_Call.BackgroundWidth,      // 横幅
                Required_Call.BackgroundHeight,     // 縦幅
                Required_Call.BackgroundColor);     // 背景色


            // 描画を行うグラフィックスクラスを生成(及び、背景画像の設定)
            System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(Background_Img);


            // 対象画像(キャラクター画像)の位置座標
            System.Drawing.Point Img_Position = new System.Drawing.Point(Required_Call.PositionX, Required_Call.PositionY);


            // 描画領域(背景)のサイズ
            System.Drawing.Size Client_Size = new System.Drawing.Size(Required_Call.BackgroundWidth, Required_Call.BackgroundHeight);


            // キャラクター画像の描画
            gr.DrawImage(Required_Call.ImageData, new System.Drawing.Rectangle(Img_Position, Required_Call.ImageData.Size), 0, 0, Required_Call.ImageData.Width, Required_Call.ImageData.Height, System.Drawing.GraphicsUnit.Pixel);


            // 編集した画像を返却
            return Background_Img;

        }

 

    }
}



さいごに


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