酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

C#でYaneSDKを使ってBMPで書いたキャラを表示させる

色々と問題を抱えてるコードです。YaneSDKだけではなくC#への理解不足もありそうです。

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.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)
        {
            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)
        {
            // 描画は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();
        }
    }
}