「<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;
}
}
}
さいごに
本ページの内容説明については、元ページを参照して下さい。