/*★ Card Class で画像を切り分ける 前田 稔 ★*/
using System;
using System.Drawing;
using System.Windows.Forms;
public class MyForm : Form
{
Card App;
int num;
public MyForm()
{
App = new Card(@"c:\data\test\hanafuda.gif",51,75);
Paint += new PaintEventHandler(MyHandler);
MouseDown += new MouseEventHandler(OnMyMouseDown);
num = 0;
}
// カードを描画
private void MyHandler(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
if (App.bmp == null) Application.Exit();
App.View(g, num, 10, 10);
}
// クリックでカードを切り替える
private void OnMyMouseDown(object sender, MouseEventArgs e)
{
num= (num+1)%49;
Invalidate();
}
}
//☆ Card Object Class
class Card
{
public Bitmap bmp;
public int W; //Sprite の幅
public int H; //Sprite の高さ
public int N; //横の枚数
// Constructor
public Card(string file, int w, int h)
{
try
{ bmp= new Bitmap(file); }
catch
{ MessageBox.Show("イメージが取得できません", "Error");
return;
}
W= w;
H= h;
N = bmp.Width / w;
}
// 画像全体を描画
public void View(Graphics g, int x, int y)
{
if (bmp!=null) g.DrawImage(bmp,x,y);
}
// Sprite を描画
public void View(Graphics g, int n, int x, int y)
{
Rectangle des = new Rectangle(x, y, W, H);
Rectangle sou = new Rectangle((n%N)*W,(n/N)*H,W,H);
if (bmp != null)
g.DrawImage(bmp,des,sou,GraphicsUnit.Pixel);
}
}
class form01
{
public static void Main()
{
MyForm mf = new MyForm();
Application.Run(mf);
}
}
|