今日やった事を踏まえて、monaくんを動かしてみました。透過色の設定がよく判ってないのでRGB(255,0,255)の色が残ったままになってます(恥ずかしい)。
|cs| using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms;
namespace yanetest2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
Yanesdk.Input.Key1 key;
Yanesdk.Draw.Win32Window window;
Yanesdk.Draw.GlTexture texture;
Yanesdk.Draw.Surface surface;
// monaくん描画開始座標
int mona_x;
int mona_y;
// フォームの読み込み時に初期化を行う
private void Form1_Load(object sender, EventArgs e)
{
key = new Yanesdk.Input.Key1();
window = new Yanesdk.Draw.Win32Window(pictureBox1.Handle);
// Texture作成時はScreen.Selectを呼ぶ
// なんで?
window.Screen.Select();
// BMPからサーフェイスに変換
texture = new Yanesdk.Draw.GlTexture();
Bitmap bmp = new Bitmap(GetType(), "mona.bmp");
Yanesdk.Draw.BitmapHelper.BitmapToSurface(bmp, out surface);
// テクスチャにサーフェイスを設定する
texture.SetSurface(surface);
// 代入による初期化しか出来ない?
// C++みたいな初期化子の使い方は出来ないのかな?
// まぁ、あとで調べましょ。
mona_x = mona_y = 0;
// monaくんは真ん中に配置しる
mona_x = (int)((window.Screen.Width / 2) - (texture.Width / 2));
mona_y = (int)((window.Screen.Height / 2) - (texture.Height / 2));
}
// 100ms間隔でこの関数が呼ばれる(10FPS)
private void timer1_Tick(object sender, EventArgs e)
{
// キーの入力状態を更新する
key.Update();
/// ボタン番号
/// 0:ESCキー
if (key.IsPress(1))
{
//ESCキーが押されていた時の処理
}
/// 1:テンキー8,↑キー,ジョイスティック↑
if (key.IsPress(1)) mona_y -= 2;
/// 2:テンキー2,↓キー,ジョイスティック↓
if (key.IsPress(2)) mona_y += 2;
/// 3:テンキー4,←キー,ジョイスティック←
if (key.IsPress(3)) mona_x -= 2;
/// 4:テンキー2,→キー,ジョイスティック→
if (key.IsPress(4)) mona_x += 2;
/// 5:スペースキー,ジョイスティック ボタン1
if (key.IsPress(5))
{
//スペースキーが押されていた時の処理
}
/// 6:テンキーEnter,リターンキー,左シフト,右シフト。
/// ジョイスティック ボタン2
if (key.IsPress(5))
{
//リターンキーが押されていた時の処理
}
// 描画はSelect()〜Update()までに行う
window.Screen.Select();
// 黒色で消すよ
window.Screen.SetClearColor(0, 0, 0);
window.Screen.Clear();
window.Screen.Blt(texture, mona_x, mona_y);
window.Screen.Update();
}
}
} ||<