カラー画像を白黒にしてみたい

カラー画像を白黒にしたい

NTSD加重平均方式風なもの

PPM画像をからR,G,Bの数値を取り、それに R*0.29891+G*0.58661+B*0.11448の計算結果を白黒画像のPGM画像に入力する、数値を作成します。

ところが、この計算結果は整数になるとは限らない。しかし、PGM画像では、数値は整数でなければならないから、誤差が生じる。私は、適当に四捨五入したので、作成した白黒画像がなんか違う感がすごくなりました。

あくまでNTSD加重平均方式風としたのはそのため。

PPM画像

                   ↓

PGM画像(青と深緑の数値はそれぞれ169,168)

基本はPGM形式と同じ

PPM画像から数値を読み取る処理は、PGM形式の時とはあまり変わりませんでした。

変わったところは、RGBで3種類の数値を一つの集まりとして記録することとそれができるようにループの回数をうまいことやるくらいでした。

RGBを記録した後は、その3つの数値を用いて先ほどの式でPGM形式用の数値を出力するくらい。

 

プログラム

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing;
using System.IO;

namespace カラー画像変換
{
    internal static class Program
    {
        /// <summary>
        /// アプリケーションのメイン エントリ ポイントです。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            //Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
        class Form1 : Form
        {
            string range_st = new string[2];
            int
range_int = new int[2];
 
            Label l = new Label[100];
            string
str = new string[100];

            int leng;
            bool P2 = false;

            int youso = new int[1000];

            string text;

            string graphic;
            string suuzi;

            int[,] red;
            int[,] green;
            int[,] blue;

            double[,] blwhf;
            string[,] blwh;

            public Form1()
            {
                StreamReader sr = new StreamReader(@"C:\Users\username\Desktop\c#\カラー画像変換\t.txt");

                int count = 0;
                while (0 <= sr.Peek())
                {
                    str[count] = sr.ReadLine();
                    if (count >= 3)
                    {
                        str[count] += "E";//Eは改行記号の代わり
                    }
                    count++;
                }

                bool mozicheck = true;
                count = 1;
                leng = str[count].Length;
                for (int i = 0; i < leng; i++)
                {
                    char mozi;
                    mozi = str[count][i];
                    if(mozi != ' ')
                    {
                        if (mozicheck)
                        {
                            range_st[0] += mozi;
                        }
                        else
                        {
                            range_st[1] += mozi;
                        }
                    }
                    else
                    {
                        mozicheck = false;
                    }
                }
                range_int[0] = int.Parse(range_st[0]);
                range_int[1] = int.Parse(range_st[1]);

                
                int s = 0,c = 0;
                bool loop = true;

                red = new int[range_int[0],range_int[1]];
                green = new int[range_int[0],range_int[1]];
                blue = new int[range_int[0],range_int[1]];
                
                for (int t =3;t <= 4; t++)
                {
                    int color = 0;
                    s = 0;

                    int a = 0;
                    for (int y = 0;y <= range_int[1]  * 3 - 1; y++)
                    {
                        if(y % 3 == 0 && y != 0)
                        {
                            a++;
                        }
                        while (true)
                        {
                            if(str[t][s] == ' ')
                            {
                                s++;
                                break;
                            }else if(str[t][s] == 'E')
                            {
                                break;
                            }

                            suuzi += str[t][s].ToString();
                            s++;
                        }
                        
                        if (loop)
                        {
                            switch (color)
                            {
                                case 0:
                                    red[c,a] = int.Parse(suuzi);
                                    color++;
                                    suuzi = null;
                                    break;
                                case 1:
                                    green[c,a] = int.Parse(suuzi);
                                    color++;
                                    suuzi = null;
                                    break;
                                case 2:
                                    blue[c,a] = int.Parse(suuzi);
                                    color = 0;
                                    suuzi = null;
                                    break;
                            }
                        }
                        else
                        {
                            loop = true;
                        }
                    }
                    c++;
                }

                blwhf = new double[range_int[0], range_int[1]];
                blwh = new string[range_int[0], range_int[1]];

                for (int k = 0; k < range_int[0]; k++) 
                {
                    for (int i = 0; i < range_int[1]; i++)
                    {
                        blwhf[k,i] = red[k,i] * 0.29891 + blue[k,i] * 0.58661 + green[k, i] * 0.11448;
                        int b = (int)Math.Round(blwhf[k, i]);
                        blwh[k, i] = b.ToString();
                    }
                }

                string stra = System.IO.Directory.GetCurrentDirectory();
                string[] textfile = Directory.GetFiles(stra);
                bool filecheck = false;

                foreach (string tex in textfile)
                {
                    string file_name = Path.GetFileName(tex);
                    if (file_name == "b.pgm")
                    {
                        filecheck = true;
                        text = tex;
                    }
                }

                StreamWriter writer;
                if (!filecheck)
                {
                    FileStream fs = File.Create*1;
                    writer = new StreamWriter(fs);
                }
                else
                {
                    File.Delete(@text);
                    FileStream fs = File.Create*2;
                    writer = new StreamWriter(fs);
                }

                writer.WriteLine("P2");
                writer.WriteLine(str[1]);
                writer.WriteLine("255");
                for (int i = 0; i < range_int[0]; i++)
                {
                    for (int v = 0; v < range_int[1]; v++)
                    {
                        writer.Write(blwh[i,v]);
                        if(v == range_int[1] - 1) 
                        {
                            writer.Write("\n");
                            break;
                        }
                        writer.Write(" ");
                    }
                }
                writer.Close();
                System.IO.File.Move(@"./b.txt", @"./b.pgm");          
            }
        }
    }
}
    

 

 

*1:@"./b.txt"

*2:@"./b.txt"

PGM画像の簡単な編集ソフトを作りました

簡単なPGM画像を編集するソフト     

   

       

       

テキストファイルを上から1行ずつ読み込むには

       

StreamReader sr = new StreamReader(@"C:\Users\username\Desktop\c#\画像編集\あ.txt");

        while (0 <= sr.Peek())
        {
            str[count] = sr.ReadLine();
            if (count >= 3)
            {
                str[count] += "E";//Eは改行記号の代わり
            }
            count++;
        }

テキストファイル : sr 

sr.Peek()は読み取り対象に文字があったら-1以外を返す

この場合は、次の行に何も書いてなかったら-1を返す

str[count] = sr.ReadLine(); これでstr[count]にテキストファイルの一行を入れます

PGM形式では、書式が決まっているのでstrを配列にすることで、特定の情報を得たいときに、countを指定することで、取得できます。

例えば:ファイル形式が欲しい→count=0 a = str[count]のように

範囲を読み取り、数値として使用できるようにする

count = 1;
leng = str[count].Length;
for (int i = 0; i < leng; i++)
    {
       mozi[i] = str[count][i];
    }

char tate1 = new char { mozi[0], mozi[1] };
char yoko2 = new char { mozi[3], mozi[4] };

string tate1s = new string(tate1);
string yoko2s = new string(yoko2);

string[,] suuzi = new string[tate,yoko];
int[,] suuzi_int = new int[tate, yoko];

今のところ 二けた×二けた しか対応できていません

for (int i = 0; i < leng; i++)
    {
       mozi[i] = str[count][i];
    }

count = 1、これで二行目を指定します。mozi[i]に一文字ずつ入れてます。

そして、char tate1 = new char { mozi[0], mozi[1] };で1と0をcharの配列に入れています。

そしてstring tate1s = new string(tate1);で1と0を一つのstring型として記録しています

横の範囲の数値も同様にやっています。

これらをすることで、後のループの制御に使用しています。

画像を構成する数値を読み取る

string[,] suuzi = new string[tate,yoko];
        int[,] suuzi_int = new int[tate, yoko];
        int tate_count = 0;
        int yoko_count = 0;
        string hikae;

        int g = 0;
        count = 3;
        while(count < tate + 3)
        {
            while(yoko_count != yoko)
            {
                hikae = str[count][g].ToString();
                if (hikae != " ")
                {
                    suuzi[tate_count,yoko_count] = hikae;
                    g++;
                    while (true)
                    {
                        hikae = str[count][g].ToString();
                        if(hikae == "E")
                        {
                            break;
                        }


                        if(hikae != " ")
                        {
                            suuzi[tate_count,yoko_count] += hikae;
                            f++;
                            g++;
                        }
                        else
                        {
                            break;
                        }
                    }
                }
                g++;
                yoko_count++;
            }
            count++;
            tate_count++;
            g = 0;
            yoko_count = 0;
        }

string[,] suuzi = new string[tate,yoko];で縦横分の要素を持てる変数を用意する

int[,] suuzi_int = new int[tate, yoko];で読み取った数値を保存します。

int[tate, yoko]とすることで、自分がテキストファイルの数字を、

縦2番目の、横2番目の数字が1と認識するように、配列でもint[2,2]には1が入るようになるので、わかりやすくなります。

int tate_count = 0;
int yoko_count = 0;

string hikae;

int g = 0;

count = 3;

tate_count : int[,]の要素の中からの縦○列目を指定する tate_count =1 だと縦1列目

yoko_count : int[,]の横○列目のを横○列目を指定する yoko_count = 1 だと横1列目

string hikaeで一応、配列変数から文字を写すように使っていましたが、たぶんいらない

int g = 0;gはstr[count]に入っている1文の何番目かを指定する

    str[count][g] g=2でstr[count]の3文字目を取得する。

count = 3 はstr[count]の画像を構成する部分のみを取得するためのもの

 

count が tate+3 とは異なればループ +3は3行、ループとは関係ない行があるから

しかし、str[count]には1行目からの関係のない行も含まれるから。

+3しないと10 10 でも7行分しか取得できない

 

yoko_count とyokoと異なればループ

yoko_count とyokoと等しくなるのは、最後の文字を取得した後、yoko_count++;により

yoko と等しくなる

                hikae = str[count][g].ToString();
                if (hikae != " ")
                {
                    suuzi[tate_count,yoko_count] = hikae;
                    g++;
                    while (true)
                    {
                        hikae = str[count][g].ToString();
                        if(hikae == "E")
                        {
                            break;
                        }


                        if(hikae != " ")
                        {
                            suuzi[tate_count,yoko_count] += hikae;
                            f++;
                            g++;
                        }
                        else
                        {
                            break;
                        }
                    }
                }

 

hikae = str[count][g].ToString();で指定した行の文字を取得する

                if (hikae != " ")
                {
                    suuzi[tate_count,yoko_count] = hikae;
                    g++;

取得したのがスペースでなければその数字をsuuzi[,]に記録する

g++;で次に取得する文字を1つ右にずらす

  while (true)
                    {
                        hikae = str[count][g].ToString();
                        if(hikae == "E")
                        {
                            break;
                        }


                        if(hikae != " ")
                        {
                            suuzi[tate_count,yoko_count] += hikae;
                            f++;
                            g++;
                        }
                        else
                        {
                            break;
                        }

 

hikae = str[count][g].ToString();
                        if(hikae == "E")
                        {
                            break;
                        }

再びhuikaeに文字を入れる、そしてEは1文の最後につけられてるので、Eは改行を表しています。Eが出る、つまり改行されて、文の終わりだったら、ループを抜ける

       if(hikae != " ")
                        {
                            suuzi[tate_count,yoko_count] += hikae;
                            g++;
                        } else
                        {
                            break;
                        }

もしhikaeがスペースでなければ先ほどと同じsuuzi[,]にhikaeを付け加えます

例 hikae = 1 → suuzi[0,0] =1 → hikae= 0 → suuzi[0,0] =10

このようにhikaeの中身がスペースになるまで繰り返します

                g++;
                yoko_count++;

g++;で次に取得する文字を1つ右にずらす

yoko_count++;で取得した文字を入れるsuuzi[,]を変える

            count++;
            tate_count++;
            g = 0;
            yoko_count = 0;

count++;でテキストファイルから1行下を指定する

tate_count++;で取得した文字を入れるsuuzi[,]をずらす

g = 0;右に1文字ずつ読み込むためにずらしていたので0に戻してまた右からは読み込み始める

yoko_count = 0;suuzi[,]における横の列をリセットする

 

        for (int i = 0; i < tate; i++)
        {
            for (int j = 0; j < yoko; j++)
            {
                suuzi_int[i, j] = int.Parse(suuzi[i, j]);
                suuzi_int[i, j] = 255 - suuzi_int[i, j];
            }
        }

suuzi[,]の中身をすべてint型にして、その数字に任意の操作をする

 

        string yoko_str = new string[yoko * 2];
        for (count = 0; count < tate; count++)
        {
            for (int j = 0; j < yoko; j++)
            {
                yoko_str[count] += suuzi_int[count, j].ToString();
                if (j != yoko - 1)
                {
                    yoko_str[count] += " ";
                }
            }
        }

string yoko_str = new string[yoko * 2]; 

この変数に、テキストファイルに書き込む数値やスペースを入れます

            for (int j = 0; j < yoko; j++)
            {
                yoko_str[count] += suuzi_int[count, j].ToString();
                if (j != yoko - 1)
                {
                    yoko_str[count] += " ";
                }
            }

j < yoko は横に指定した文字数だけ(10 10の場合 10回)繰り返す

yoko_str[count] += suuzi_int[count, j].ToString();

yoko_str[count]にchar型のsuuzi_int[count]を.Tostring()でstring型にして

yoko_str[count]に数値を入れる

    if (j != yoko - 1)
                {
                    yoko_str[count] += " ";
                }

yoko_str[count]に数字を加えたら、テキストファイルに書き込むとき、数字の隣にスペースを書くために、yoko_str[count]にスペースを加える

 

        string stra = System.IO.Directory.GetCurrentDirectory();
        string textfile = Directory.GetFiles(stra);
        bool filecheck = false;
        int fcount = 0;

        foreach (string tex in textfile)
        {
            string file_name = Path.GetFileName(tex);
            if (file_name == "a.pgm")
            {
                filecheck = true;
                fcount = 1;
                text = tex;
            }
        }

string stra = System.IO.Directory.GetCurrentDirectory();

exeファイルのあるフォルダのパスを取得しています

string textfile = Directory.GetFiles(stra);

そのフォルダの中にあるファイルのパスを取得します

 

        bool filecheck = false;
        int fcount = 0;

        foreach (string tex in textfile)
        {
            string file_name = Path.GetFileName(tex);
            if (file_name == "a.pgm")
            {
                filecheck = true;
                fcount = 1;
                text = tex;
            }
        }

foreach(string tex in textfile)で記録したファイルのパスがある分だけ繰り返す

そのファイルの名前をstring file_name = Path.GetFileName(tex);でfile_nameに記録します。

            if (file_name == "a.pgm")
            {
                filecheck = true;
                fcount = 1;
                text = tex;
            }

これで、指定したファイルがあれば、filecheckをtrueにして、そのファイルを消す

        StreamWriter writer;
        if (!filecheck)
        {
            FileStream fs = File.Create*1;
            writer = new StreamWriter(fs);
        }
        else
        {
            File.Delete(@text);
            FileStream fs = File.Create*2;
            writer = new StreamWriter(fs);
        }

先ほどのように、もし指定したファイルがあったらそれを削除する

            FileStream fs = File.Create*3;
            writer = new StreamWriter(fs);

指定した名前のファイルを作成して、それにアクセスできるようにする

        writer.WriteLine("P2");
        writer.WriteLine(str[1]);
        writer.WriteLine("255");
        for (int i = 0; i < tate; i++)
        {
            writer.WriteLine(yoko_str[i]);
        }
        writer.Close();
        System.IO.File.Move(@"./a.txt", @"./a.pgm");
    }

PGM形式に必要なものを書き込んでゆく

writer.Close()で書き込みを終了する。これがないと書き込めない

System.IO.File.Move(@"./a.txt", @"./a.pgm");で.txtから.pgmにして、作成したファイルの形式をテキスト形式からPGM形式に変える。

 

 

using System;
using System.Drawing;
using System.Windows.Forms;
using System.IO;

class Program
{
    [STAThread]
    static void Main()
    {
        Application.Run(new Form1());
    }
}

class Form1 : Form
{
    Label l = new Label[100];
    string
str = new string[100];
    char mozi = new char[10];

    int leng;
    bool P2 = false;

    int youso = new int[1000];

    string text;

    public Form1()
    {
        this.Text = "Title";
        this.StartPosition = FormStartPosition.Manual;  // 位置の決定方法
        this.Location = new Point(100, 50);  // ウィンドウの位置
        this.Size = new Size(500, 500);

        StreamReader sr = new StreamReader(@"C:\Users\username\Desktop\c#\画像編集\あ.txt");

        int count = 0;
        while (0 <= sr.Peek())
        {
            str[count] = sr.ReadLine();
            if (count >= 3)
            {
                str[count] += "E";//Eは改行記号の代わり
            }
            count++;
        }

        while (count >= 0)
        {
            l[count] = new Label()
            {
                Text = str[count],
                Location = new Point(0, 30 * count),
            };
            this.Controls.Add(l[count]);
            count--;
        }

        count = 1;
        leng = str[count].Length;
        for (int i = 0; i < leng; i++)
        {
            mozi[i] = str[count][i];
        }

        if (str[0] == "P2")
        {
            P2 = true;
        }

        char tate1 = new char { mozi[0], mozi[1] };
        char yoko2 = new char { mozi[3], mozi[4] };

        string tate1s = new string(tate1);
        string yoko2s = new string(yoko2);

        int tate = int.Parse(tate1s);
        int yoko = int.Parse(yoko2s);


        string[,] suuzi = new string[tate,yoko];
        int[,] suuzi_int = new int[tate, yoko];
        int tate_count = 0;
        int yoko_count = 0;
        string hikae;

        int g = 0;
        count = 3;
        while(count < tate + 3)
        {
            while(yoko_count != yoko)
            {
                hikae = str[count][g].ToString();
                if (hikae != " ")
                {
                    suuzi[tate_count,yoko_count] = hikae;
                    g++;
                    while (true)
                    {
                        hikae = str[count][g].ToString();
                        if(hikae == "E")
                        {
                            break;
                        }


                        if(hikae != " ")
                        {
                            suuzi[tate_count,yoko_count] += hikae;
                            f++;
                            g++;
                        }
                        else
                        {
                            break;
                        }
                    }
                }
                g++;
                yoko_count++;
            }
            count++;
            tate_count++;
            g = 0;
            yoko_count = 0;
        }

        
        for (int i = 0; i < tate; i++)
        {
            for (int j = 0; j < yoko; j++)
            {
                suuzi_int[i, j] = int.Parse(suuzi[i, j]);
                suuzi_int[i, j] = 255 - suuzi_int[i, j];
            }
        }
        

        string yoko_str = new string[yoko * 2];
        for (count = 0; count < tate; count++)
        {
            for (int j = 0; j < yoko; j++)
            {
                yoko_str[count] += suuzi_int[count, j].ToString();
                if (j != yoko - 1)
                {
                    yoko_str[count] += " ";
                }
            }
        }

        string stra = System.IO.Directory.GetCurrentDirectory();
        string textfile = Directory.GetFiles(stra);
        bool filecheck = false;
        int fcount = 0;

        foreach (string tex in textfile)
        {
            string file_name = Path.GetFileName(tex);
            if (file_name == "a.pgm")
            {
                filecheck = true;
                fcount = 1;
                text = tex;
            }
        }

        StreamWriter writer;
        if (!filecheck)
        {
            FileStream fs = File.Create*4;
            writer = new StreamWriter(fs);
        }
        else
        {
            File.Delete(@text);
            FileStream fs = File.Create*5;
            writer = new StreamWriter(fs);
        }

        writer.WriteLine("P2");
        writer.WriteLine(str[1]);
        writer.WriteLine("255");
        for (int i = 0; i < tate; i++)
        {
            writer.WriteLine(yoko_str[i]);
        }
        writer.Close();
        System.IO.File.Move(@"./a.txt", @"./a.pgm");
    }
}

 

*1:@"./a.txt"

*2:@"./a.txt"

*3:@"./a.txt"

*4:@"./a.txt"

*5:@"./a.txt"

順番設定をエクセルでできるようにしました

キャラの順番をエクセルで設定できるようにしました

今までは、キャラの画像を持つ構造体のメンバ変数に、前衛になるほど値が大きくなるように設定することで、キャラの順番を設定していました。

 

SpreadsheetLightでエクセルを読み込むことで、キャラの名前と順番を設定できるようにしました。

SpreadsheetLight

エクセルファイルの取得の仕方

SLDocument sl = new SLDocument(@"myfolder/character.xlsx");

エクセルのセルの値の取得の仕方

string str = sl.GetCellValueAsString("A10");

セルの値のおすすめ

string CharaName = sl.GetCellValueAsString("A" + CellNum.ToString());

CellNum++;

こうやって、エクセルの縦の列は文字で指定して、横の行を変数にして、その値を1ずつ増やすと、列を変えずに、1行ずつ、セルの値が取得できます。

エクセルファイルのパスを使った取得の仕方

visual studioのプロジェクトファイルの中の実行ファイルが入っているフォルダに、

新しくフォルダを作ります。フォルダ名をmyfolderとして、エクセルファイルをchara.xlsxとします。

こうして、エクセルファイルのパスを使うときは、myfolder/chara.xlsxとすればうまくいきます。

 

using System;
using System.Windows.Forms;
using System.Drawing;
using SpreadsheetLight;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Spreadsheet;

namespace プリコネ_バフ_デバフ
{
    internal static class Program
    {
        [STAThread]
        static void Main()
        {

            Application.EnableVisualStyles();
            //Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }

    class Form1 : Form
    {

        int scroll = 0;
        public static int Cscroll = 0;
        int scrollpicT = 100, scrollpicY = 200, countX = 1125, countY = 10;

        PictureBox scrpic = new PictureBox();
        Bitmap scrpicture;

        Label buff = new Label();
        Button buffbutton = new Button();

        Label count = new Label();
        int Bcount = 90;

        Button start = new Button();
        System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();

        Button charaselect = new Button();
        public static bool charaform = true;

        public static Set charaset = new Set[100];


        static Panel ScrollPanel = new Panel();
        static PictureBox CharaPosition = new PictureBox[100];

        int? CP = new int?[100];
        int table = 0;

        public static int CharaCount = 0;
        int i = 0;

        public static Set SelectChara = new Set[100];

        public static int eDelta;
        public static int Characlick = 0;

        static PictureBox back_ground = new PictureBox();
        public static SLDocument sl = new SLDocument(@"myfolder/character.xlsx");

        public static Set Cposition = new Set[100];

        public static Bitmap Samune = new Bitmap[100];

        int CellNum = 1;

        public Form1()
        {
            this.Size = new Size(1200, 600);

            this.Location = new Point(0, 0);
            this.Dock = DockStyle.Fill;

            scrpicture = new Bitmap(@"myfolder/バフ<改>.png");
            scrpic = new PictureBox()
            {
                Image = scrpicture,
                SizeMode = PictureBoxSizeMode.AutoSize,
            };
            scrpic.Location = new System.Drawing.Point(scrollpicT, scrollpicY);
            scrpic.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.buff_MouseWheel);
            this.Controls.Add(scrpic);

            buff.Location = new System.Drawing.Point(scrollpicT + 30, scrollpicY);
            buff.Size = new Size(84, 24);
            buff.Font = new System.Drawing.Font("Arial", 12);
            buff.Text = "バフ:";
            buff.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.buff_MouseWheel);
            this.Controls.Add(buff);

            //バフボタン設定
            buffbutton.Text = "バフ";
            buffbutton.Location = new System.Drawing.Point(10, 150);
            buffbutton.Size = new System.Drawing.Size(50, 30);
            this.Controls.Add(buffbutton);

            timer.Interval = 1000;
            timer.Tick += new EventHandler(Battle_Clock);

            start.Location = new System.Drawing.Point(countX, countY + 24);
            start.Size = new System.Drawing.Size(50, 30);
            start.Text = "開始";
            start.Click += new EventHandler(start_click);
            this.Controls.Add(start);

            count.Location = new System.Drawing.Point(countX, countY);
            count.AutoSize = true;
            count.Font = new System.Drawing.Font("Arial", 12);
            count.Text = string.Format("{0}:{1:D5}", (Bcount / 60).ToString(), (Bcount - (Bcount / 60) * 60).ToString("00"));
            this.Controls.Add(count);

            charaselect = new Button()
            {
                Text = "キャラ",
                Location = new Point(1110, 100),
            };
            charaselect.Click += new EventHandler(Charaform);
            this.Controls.Add(charaselect);

            ScrollPanel.BorderStyle = BorderStyle.FixedSingle;
            ScrollPanel.Location = new Point(85, 295);
            ScrollPanel.Size = new Size(980, 150);

            chara();//キャラの画像など設定


            i = 0;
            while (true)
            {
                Set chara = charaskill(i);
                if (chara.CharaName != null)
                {
                    CharaCount++;
                }
                else
                {
                    break;
                }
                i++;
            }

 

            for (i = 0; i < CharaCount - 1; i++)
            {
                Samune[i] = ExcelChara();
            }

            for (i = 0; i < CharaCount - 1; i++)
            {
                CharaPosition[table] = new PictureBox()
                {
                    Image = new Bitmap(Samune[i]),
                    SizeMode = PictureBoxSizeMode.AutoSize,
                    Location = new Point(table * 129 + 10 * (table + 1), 10),
                };
                ScrollPanel.Controls.Add(CharaPosition[table]);
                table++;
            }
            ScrollPanel.MouseWheel += new MouseEventHandler(CharaScroll);

 

            this.Controls.Add(ScrollPanel);


        }

        void CharaScroll(object sender, MouseEventArgs e)
        {
            eDelta = e.Delta;
            CharaMove(eDelta, Characlick, 1000);
        }

        Bitmap ExcelChara()
        {
            Bitmap bit;
            while (true)
            {
                string CharaName = sl.GetCellValueAsString("A" + CellNum.ToString());
                if (CharaName != "")
                {
                    for (int a = 0; a < CharaCount; a++)
                    {
                        Set Cs = new Set();
                        Cs = charaskill(a);
                        if (CharaName == Cs.CharaName)
                        {
                            bit = Cs.CharaPicture;
                            CellNum++;
                            return bit;
                        }
                    }
                }
                CellNum++;
            }

        }
        public static void CharaMove(int eMouse, int Characlick, int Creturn)
        {
            Form1.back_ground.Visible = false;

            if (eMouse >= 0)
            {
                if (Cscroll <= (CharaCount - 7) * 129 + 10 * (CharaCount + 1 - 7))
                {
                    Cscroll += eMouse;
                }
            }
            else
            {
                if (Cscroll < 10)
                {
                    Cscroll = 0;
                }
                else
                {
                    Cscroll += eMouse;
                }
            }
            if (Characlick != 0)
            {
                Cscroll = Characlick;
            }

            for (int i = 0; i < CharaCount - 1; i++)
            {

                CharaPosition[i].Location = new Point(i * 129 + 10 * (i + 1) - Cscroll, 10);
                ScrollPanel.Controls.Add(CharaPosition[i]);
                CharaPosition[i].BringToFront();

                if (Creturn == i)
                {
                    Form1.back_ground = new PictureBox()
                    {
                        Image = new Bitmap(プリコネ_バフ_デバフ_.Properties.Resources.background_red),
                        SizeMode = PictureBoxSizeMode.AutoSize,
                        Location = new Point(i * 129 + 10 * (i + 1) - Cscroll - 5, 5),
                    };
                    ScrollPanel.Controls.Add(Form1.back_ground);
                }
            }
            Creturn = 1000;
        }

        private void buff_MouseWheel(object sender, MouseEventArgs e)
        {
            scroll += e.Delta;
            if (scroll < 0)
            {
                scroll = 0;
            }
            buff.Text = "バフ量:" + (scroll / 120).ToString();
        }


        private void Battle_Clock(object sender, EventArgs e)
        {
            Bcount -= 1;
            if (Bcount <= 0)
            {
                Bcount = 0;
                timer.Enabled = false;
            }
            count.Text = string.Format("{0}:{1:D5}", (Bcount / 60).ToString(), (Bcount - (Bcount / 60) * 60).ToString("00"));
            this.Controls.Add(count);
        }

        private void Charaform(object sender, EventArgs e)
        {
            if (charaform)
            {
                Cform();
            }
            charaform = false;
        }

        private void Cform()
        {
            charaform = false;
            Charaselect_form charaselect_form = new Charaselect_form();
            charaselect_form.Show();
        }
        private void start_click(object sender, EventArgs e)
        {
            timer.Enabled = true;
        }

        public struct Set
        {
            public string CharaName;
            public Bitmap CharaPicture;
        }

        private void chara()
        {
            //UntiBuffがマイナスなら魔法デバフ、プラスなら物理デバフ

            //おばキャルレベル179の時とりあえず、スタンやバフデバフ表示のみ
            charaset[0].CharaName = "おばキャル";
            charaset[0].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.obakyal;

            //アン
            charaset[1].CharaName = "アン";
            charaset[1].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.ann;

            //ホマレ
            charaset[2].CharaName = "ホマレ";
            charaset[2].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.homare;

            //カイノリ
            charaset[3].CharaName = "カイノリ";
            charaset[3].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.kainori;

            //クレジッタ
            charaset[4].CharaName = "クレジッタ";
            charaset[4].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.kurezitta;

            //クリサレン
            charaset[5].CharaName = "クリサレン";
            charaset[5].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.kurisarenn;

            //クリスティー
            charaset[6].CharaName = "クリスティーナ";
            charaset[6].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.kurisuthina;

            //クリユカリ
            charaset[7].CharaName = "クリユカリ";
            charaset[7].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.kuriyukari;

            //キョウカ
            charaset[8].CharaName = "キョウカ";
            charaset[8].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.kyouka;

            //マホ
            charaset[9].CharaName = "マホ";
            charaset[9].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.maho;

            //マコト
            charaset[10].CharaName = "マコト";
            charaset[10].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.makoto;

            //水ヒヨリ
            charaset[11].CharaName = "水ヒヨリ";
            charaset[11].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.mizuhiyori;

            //水ノゾミ
            charaset[12].CharaName = "水ノゾミ";
            charaset[12].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.mizunozomi;

            //水サレン
            charaset[13].CharaName = "水サレン";
            charaset[13].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.mizusarenn;

            //水シズル
            charaset[14].CharaName = "水シズル";
            charaset[14].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.mizusizuru;

            //水ユイ
            charaset[15].CharaName = "水ユイ";
            charaset[15].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.mizuyui;

            //モニカ
            charaset[16].CharaName = "モニカ";
            charaset[16].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.monika;

            //ネネカ
            charaset[17].CharaName = "ネネカ";
            charaset[17].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.neneka;

            //闇クウカ
            charaset[18].CharaName = "闇クウカ";
            charaset[18].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.yamikuuka;

            //ノウェム
            charaset[19].CharaName = "ノウェム";
            charaset[19].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.nowemu;

            //ニャル
            charaset[20].CharaName = "ニャル";
            charaset[20].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.nyaru;

            //ニュフィ
            charaset[21].CharaName = "ニュフィ";
            charaset[21].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.nyufi;

            //ニュイミ
            charaset[22].CharaName = "ニュイミ";
            charaset[22].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.nyuimi;

            //ニュネカ
            charaset[23].CharaName = "ニュネカ";
            charaset[23].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.nyuneka;

            //ニュペコ
            charaset[24].CharaName = "ニュペコ";
            charaset[24].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.nyupeko;

            //オバペコ
            charaset[25].CharaName = "オバペコ";
            charaset[25].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.obapeko;

            //オバラビ
            charaset[26].CharaName = "オバラビ";
            charaset[26].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.obarabi;

            //ハツシオ
            charaset[27].CharaName = "ハツシオ";
            charaset[27].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.hatusio;

            //オユキ
            charaset[28].CharaName = "オユキ";
            charaset[28].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.oyuki;

            //プリコロ
            charaset[29].CharaName = "プリコロ";
            charaset[29].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.purikoro;

            //プリキャル
            charaset[30].CharaName = "プリキャル";
            charaset[30].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.purikyaru;

            //プリペコ
            charaset[31].CharaName = "プリペコ";
            charaset[31].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.puripeko;

            //プリレイ
            charaset[32].CharaName = "プリレイ";
            charaset[32].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.purirei;

            //プリユイ
            charaset[33].CharaName = "プリユイ";
            charaset[33].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.puriyui;

            //プヨリ
            charaset[34].CharaName = "プヨリ";
            charaset[34].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.puyori;

            //ラビリスタ
            charaset[35].CharaName = "ラビリスタ";
            charaset[35].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.rabirisuta;

            //ランファ
            charaset[36].CharaName = "ランファ";
            charaset[36].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.rannfa;

            //レイ
            charaset[37].CharaName = "レイ";
            charaset[37].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.rei;

            //サオイ
            charaset[38].CharaName = "サオイ";
            charaset[38].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.saoi;

            //サレン
            charaset[39].CharaName = "サレン";
            charaset[39].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.sarenn;

            //ユイ
            charaset[40].CharaName = "ユイ";
            charaset[40].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.yui;

            //ユカリ
            charaset[41].CharaName = "ユカリ";
            charaset[41].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.yukari;

            //ユニ
            charaset[42].CharaName = "ユニ";
            charaset[42].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.yuni;

            //エクマホ
            charaset[43].CharaName = "エクマホ";
            charaset[43].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.ekumaho;

            //ステミサ
            charaset[44].CharaName = "ステミサ";
            charaset[44].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.sutemisa;

            //アメス
            charaset[45].CharaName = "アメス";
            charaset[45].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.amesu;

            //アキサレ
            charaset[46].CharaName = "アキサレ";
            charaset[46].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.akisare;

            //カオリ
            charaset[47].CharaName = "カオリ";
            charaset[47].CharaPicture = プリコネ_バフ_デバフ_.Properties.Resources.kaori;
        }
        private Set charaskill(int skilli)
        {
            return charaset[skilli];
        }
    }
    class Charaselect_form : Form
    {

        Form1.Set chara = new Form1.Set[100];

        PictureBox CharaSamune = new PictureBox[100];

        PictureBox click_gif = new PictureBox();

        int CharaX = new int[100];
        int
CharaY = new int[100];
        int i;
        public Charaselect_form()
        {
            CharaX[0] = 5;
            CharaY[0] = 0;

            this.Text = "キャラセレクト";
            this.Size = new Size(750, 700);
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            this.ShowInTaskbar = false;
            this.FormBorderStyle = FormBorderStyle.FixedDialog;

            this.AutoScroll = true;

            this.Location = new Point(0, 0);

            int count = 1;
            for (i = 0; i < Form1.CharaCount - 1; i++)
            {
                CharaSamune[i] = new PictureBox()
                {
                    Size = new Size(129, 129),
                    Image = new Bitmap(Form1.Samune[i]),
                };
                CharaSamune[i].Location = new Point(CharaX[i], CharaY[i]);

                CharaSamune[i].MouseClick += new MouseEventHandler(chara_click);

                this.Controls.Add(CharaSamune[i]);

                CharaX[i + 1] = CharaX[i] + 138;
                CharaY[i + 1] = CharaY[i];

                if ((i + 1) == 5 * count)
                {
                    CharaY[i + 1] = CharaY[i] + 140;
                    CharaX[i + 1] = 5;
                    count++;
                }
            }

            this.FormClosing += new FormClosingEventHandler(charaselect_close);
        }

        void chara_click(object sender, MouseEventArgs e)
        {
            int Creturn = 10;
            for (i = 0; i < Form1.CharaCount; i++)
            {
                if (sender == CharaSamune[i])
                {
                    Creturn = i;
                }
            }
            Form1.CharaMove(0, Creturn * 129 + Creturn * 10 - (129 + 6) * 3, Creturn);

            int mx = PointToClient(System.Windows.Forms.Cursor.Position).X;//フォーム座標に設定
            int my = PointToClient(System.Windows.Forms.Cursor.Position).Y;
        }

        void charaselect_close(object sender, FormClosingEventArgs e)
        {
            Form1.charaform = true;
        }
    }
}

キャラの順番を表示する機能ができました

キャラの順番表示

キャラ選択画面で、キャラを選択すると(クレジッタ選択)

そのキャラの周囲に並ぶキャラの順番が表示されます

別フォーム(別クラス)のPictureBox(コントロール)の座標が変わらない

メインの画面とキャラ選択の画面は、別の画面なので、それぞれのコントロール別のクラス内の物になっています。

キャラ選択画面でクリックしたキャラの画像、PictureBoxに応じた値をキャラの画像の座標を操作する関数に渡すことで、画像の位置を動かしています。

このとき、画像をずらす関数に値を渡しても動きませんでした。

こうやったらできました

Form form1 = new Form(); 

form1.Chara = 100;//Chara キャラの画像の座標

のようにせず、

public static Chara; のように別クラスから操作したい変数にstaticをつけるとうまくいきました。

staticはインスタンスを作るのではなく、その変数をアプリで共通の変数にすることができます。Form form1 = new Form(); のようにすると、form1.Chara=100;としても、それは作成されたインスタンスの変数の値が変わっただけで、元の操作したい変数は操作できていません。staticをつけた変数を呼び出すときは、Form1.Chara のように呼び出し元のクラス名に.をつけて呼び出します。

 

これに気づくのにかなり時間がかかりました

 

プログラム

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing;
using System.Timers;
using プリコネ_バフ_デバフ;


namespace プリコネ_バフ_デバフ
{
    internal static class Program
    {
        [STAThread]
        static void Main()
        {

            Application.EnableVisualStyles();
            //Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }

    class Form1 : Form
    {

        int scroll = 0;
        public static int Cscroll = 0;
        int scrollpicT = 100, scrollpicY = 200, countX = 1125, countY = 10;

        PictureBox scrpic = new PictureBox();
        Bitmap scrpicture;

        Label buff = new Label();
        Button buffbutton = new Button();

        Label count = new Label();
        int Bcount = 90;

        Button start = new Button();
        System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();

        Button charaselect = new Button();
        public static bool charaform = true;

        Set charaset = new Set[100];


        static Panel ScrollPanel = new Panel();
        static PictureBox CharaPosition = new PictureBox[43];
        Set CG = new Set();
        int? CP = new int?[100];
        int table = 0;

        public static int CharaCount = 0;
        int i = 0;

        public static Set SelectChara = new Set[100];

        public static int eDelta;
        public static int Characlick = 0;
        public Form1()
        {
            this.Size = new Size(1200, 600);

            this.Location = new Point(0, 0);
            this.Dock = DockStyle.Fill;

            scrpicture = new Bitmap(@"C:\Users\スギヤマカイ\Desktop\c#\プリコネ<バフ・デバフ>\バフ<改>.png");
            scrpic = new PictureBox()
            {
                Image = scrpicture,
                SizeMode = PictureBoxSizeMode.AutoSize,
            };
            scrpic.Location = new System.Drawing.Point(scrollpicT, scrollpicY);
            scrpic.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.buff_MouseWheel);
            this.Controls.Add(scrpic);

            buff.Location = new System.Drawing.Point(scrollpicT + 30, scrollpicY);
            buff.Size = new Size(84, 24);
            buff.Font = new Font("Arial", 12);
            buff.Text = "バフ:";
            buff.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.buff_MouseWheel);
            this.Controls.Add(buff);

            //バフボタン設定
            buffbutton.Text = "バフ";
            buffbutton.Location = new System.Drawing.Point(10, 150);
            buffbutton.Size = new System.Drawing.Size(50, 30);
            this.Controls.Add(buffbutton);

            timer.Interval = 1000;
            timer.Tick += new EventHandler(Battle_Clock);

            start.Location = new System.Drawing.Point(countX, countY + 24);
            start.Size = new System.Drawing.Size(50, 30);
            start.Text = "開始";
            start.Click += new EventHandler(start_click);
            this.Controls.Add(start);

            count.Location = new System.Drawing.Point(countX, countY);
            count.AutoSize = true;
            count.Font = new Font("Arial", 12);
            count.Text = string.Format("{0}:{1:D5}", (Bcount / 60).ToString(), (Bcount - (Bcount / 60) * 60).ToString("00"));
            this.Controls.Add(count);

            charaselect = new Button()
            {
                Text = "キャラ",
                Location = new Point(1110, 100),
            };
            charaselect.Click += new EventHandler(Charaform);
            this.Controls.Add(charaselect);

            ScrollPanel.BorderStyle = BorderStyle.FixedSingle;
            ScrollPanel.Location = new Point(85, 295);
            ScrollPanel.Size = new Size(980, 150);

            i = 0;
            while (true)
            {
                Set chara = charaskill(i);
                if (chara.SkillName1 != null)
                {
                    CharaCount++;
                }
                else
                {
                    break;
                }
                i++;
            }

            //ポジション数、整列
            Set Cposition = new Set[CharaCount];
            Set Cposition2 = new Set();
            int
position = new int[CharaCount];
            int x;
            bool LoopCheck = false;
            for (i = 0; i < CharaCount; i++)
            {
                Cposition[i] = charaskill(i);
                position[i] = Cposition[i].Position;
            }
            while (true)
            {
                LoopCheck = true;
                for (i = 0; i < CharaCount - 1; i++)
                {

                    if (position[i] > position[i + 1])
                    {
                        x = position[i + 1];
                        position[i + 1] = position[i];
                        position[i] = x;

                        Cposition2 = Cposition[i + 1];
                        Cposition[i + 1] = Cposition[i];
                        Cposition[i] = Cposition2;

                        LoopCheck = false;
                    }
                    else
                    {

                    }
                }
                if (LoopCheck)
                {
                    break;
                }
            }
            for (i = 0; i < CharaCount; i++)
            {
                SelectChara[i] = Cposition[i];
            }


            for (int i = 0; i < CharaCount; i++)
            {
                CP[i] = Cposition[i].Position;

                int CP2 = (int)CP[i] * 194 + 298;

                if (CP[i] != null)
                {
                    CharaPosition[table] = new PictureBox()
                    {
                        Image = new Bitmap(Cposition[i].Picture),
                        SizeMode = PictureBoxSizeMode.AutoSize,
                        Location = new Point(table * 129 + 10 * (table + 1), 10),
                    };
                    ScrollPanel.Controls.Add(CharaPosition[table]);
                    table++;
                }
            }
            ScrollPanel.MouseWheel += new MouseEventHandler(CharaScroll);

 

            this.Controls.Add(ScrollPanel);


        }

        void CharaScroll(object sender, MouseEventArgs e)
        {
            eDelta = e.Delta;
            CharaMove(eDelta,Characlick);
        }

        public static void CharaMove(int eMouse,int Characlick)
        {
            if (eMouse >= 0)
            {
                if (Cscroll <= (CharaCount - 7) * 129 + 10 * (CharaCount + 1 - 7))
                {
                    Cscroll += eMouse;
                }
            }
            else
            {
                if (Cscroll < 10)
                {
                    Cscroll = 0;
                }
                else
                {
                    Cscroll += eMouse;
                }
            }
            if(Characlick != 0)
            {
                Cscroll = Characlick;
            }

            for (int i = 0; i < CharaCount; i++)
            {
                
                CharaPosition[i].Location = new Point(i * 129 + 10 * (i + 1) - Cscroll, 10);
                ScrollPanel.Controls.Add(CharaPosition[i]);
            }
        }

        private void buff_MouseWheel(object sender, MouseEventArgs e)
        {
            scroll += e.Delta;
            if (scroll < 0)
            {
                scroll = 0;
            }
            buff.Text = "バフ量:" + (scroll / 120).ToString();
        }


        private void Battle_Clock(object sender, EventArgs e)
        {
            Bcount -= 1;
            if (Bcount <= 0)
            {
                Bcount = 0;
                timer.Enabled = false;
            }
            count.Text = string.Format("{0}:{1:D5}", (Bcount / 60).ToString(), (Bcount - (Bcount / 60) * 60).ToString("00"));
            this.Controls.Add(count);
        }

        private void Charaform(object sender, EventArgs e)
        {
            if (charaform)
            {
                Cform();
            }
            charaform = false;
        }

        private void Cform()
        {
            charaform = false;
            Charaselect_form charaselect_form = new Charaselect_form();
            charaselect_form.Show();
        }
        private void start_click(object sender, EventArgs e)
        {
            timer.Enabled = true;
        }

        public struct Set
        {
            public string SkillName1;
            public Bitmap Picture;
            public int PhyDEF;              //物理防御
            public int MaDEF;               //魔法防御
            public int PhyATK;              //物理攻撃力
            public int MaATK;               //魔法防御力
            public int Tp;                  //TP回復・減少
            public int Sutan;               //スタン
            public int Interval;            //スキル頻度
            public int EffectTime;          //スキル効果時間
            public int Position;         //立ち位置
            //public int speed;               //行動速度アップ・ダウン
        }

        public Set charaskill(int i)
        {
            //UntiBuffがマイナスなら魔法デバフ、プラスなら物理デバフ

            //おばキャルレベル179の時とりあえず、スタンやバフデバフ表示のみ
            charaset[0].Picture = プリコネ_バフ_デバフ_.Properties.Resources.obakyal;
            charaset[0].SkillName1 = "ダークボルテックス";
            charaset[0].PhyATK = 0;
            charaset[0].MaATK = 0;
            charaset[0].PhyDEF = 0;
            charaset[0].MaDEF = 0;
            charaset[0].Interval = 10;
            charaset[0].EffectTime = 0;
            charaset[0].Tp = -140;
            charaset[0].Sutan = 0;
            charaset[0].Position = 150;

            //アン
            charaset[1].Picture = プリコネ_バフ_デバフ_.Properties.Resources.ann;
            charaset[1].SkillName1 = "コリジョンスペル";
            charaset[1].PhyATK = 0;
            charaset[1].MaATK = 0;
            charaset[1].PhyDEF = 0;
            charaset[1].MaDEF = 0;
            charaset[1].Interval = 10;
            charaset[1].EffectTime = 0;
            charaset[1].Tp = 100;
            //charaset[1].speed = 50;
            charaset[1].Position = 140;

            //ホマレ
            charaset[2].Picture = プリコネ_バフ_デバフ_.Properties.Resources.homare;
            charaset[2].Sutan = 0;
            charaset[2].SkillName1 = "マインドクラック";
            charaset[2].PhyATK = 0;
            charaset[2].MaATK = 0;
            charaset[2].PhyDEF = 0;
            charaset[2].MaDEF = -127;
            charaset[2].Interval = 10;
            charaset[2].EffectTime = 0;
            charaset[2].Tp = 0;
            charaset[2].Position = 110;

            //カイノリ
            charaset[3].Picture = プリコネ_バフ_デバフ_.Properties.Resources.kainori;
            charaset[3].Sutan = 0;
            charaset[3].SkillName1 = "シャドウファング";
            charaset[3].PhyATK = 0;
            charaset[3].MaATK = 0;
            charaset[3].PhyDEF = 0;
            charaset[3].MaDEF = 0;
            charaset[3].Interval = 10;
            charaset[3].EffectTime = 0;
            charaset[3].Tp = 80;
            charaset[3].Position = 280;

            //クレジッタ
            charaset[4].Picture = プリコネ_バフ_デバフ_.Properties.Resources.kurezitta;
            charaset[4].Sutan = 0;
            charaset[4].SkillName1 = "トラップウォレット";
            charaset[4].PhyATK = 0;
            charaset[4].MaATK = 0;
            charaset[4].PhyDEF = -50;
            charaset[4].MaDEF = 0;
            charaset[4].Interval = 10;
            charaset[4].EffectTime = 0;
            charaset[4].Tp = 140;
            charaset[4].Position = 80;

            //クリサレン
            charaset[5].Picture = プリコネ_バフ_デバフ_.Properties.Resources.kurisarenn;
            charaset[5].Sutan = 0;
            charaset[5].SkillName1 = "アメイジングギフト";
            charaset[5].PhyATK = 4368;
            charaset[5].MaATK = 4368;
            charaset[5].PhyDEF = 110;
            charaset[5].MaDEF = 110;
            charaset[5].Interval = 10;
            charaset[5].EffectTime = 0;
            charaset[5].Tp = 0;
            charaset[5].Position = 410;

            //クリスティーナ
            charaset[6].Picture = プリコネ_バフ_デバフ_.Properties.Resources.kurisuthina;
            charaset[6].Sutan = 0;
            charaset[6].SkillName1 = "オーバーレイ";
            charaset[6].PhyATK = 6912;
            charaset[6].MaATK = 0;
            charaset[6].PhyDEF = 0;
            charaset[6].MaDEF = 0;
            charaset[6].Interval = 10;
            charaset[6].EffectTime = 0;
            charaset[6].Tp = 437;
            charaset[6].Position = 290;

            //クリユカリ
            charaset[7].Picture = プリコネ_バフ_デバフ_.Properties.Resources.kuriyukari;
            charaset[7].Sutan = 0;
            charaset[7].SkillName1 = "ペールムーン";
            charaset[7].PhyATK = 0;
            charaset[7].MaATK = 0;
            charaset[7].PhyDEF = -164;
            charaset[7].MaDEF = 0;
            charaset[7].Interval = 10;
            charaset[7].EffectTime = 0;
            charaset[7].Tp = -211;
            charaset[7].Position = 250;

            //キョウカ
            charaset[8].Picture = プリコネ_バフ_デバフ_.Properties.Resources.kyouka;
            charaset[8].Sutan = 0;
            charaset[8].SkillName1 = "アイスランス";
            charaset[8].PhyATK = 0;
            charaset[8].MaATK = 0;
            charaset[8].PhyDEF = 0;
            charaset[8].MaDEF = 0;
            charaset[8].Interval = 10;
            charaset[8].EffectTime = 0;
            charaset[8].Tp = 0;
            charaset[8].Position = 10;

            //マホ
            charaset[9].Picture = プリコネ_バフ_デバフ_.Properties.Resources.maho;
            charaset[9].Sutan = 0;
            charaset[9].SkillName1 = "マホまほひーる";
            charaset[9].PhyATK = 0;
            charaset[9].MaATK = 0;
            charaset[9].PhyDEF = 0;
            charaset[9].MaDEF = 182;
            charaset[9].Interval = 10;
            charaset[9].EffectTime = 0;
            charaset[9].Tp = 0;
            charaset[9].Position = 50;

            //マコト
            charaset[10].Picture = プリコネ_バフ_デバフ_.Properties.Resources.makoto;
            charaset[10].Sutan = 0;
            charaset[10].SkillName1 = "ハードスラッシュ";
            charaset[10].PhyATK = 1365;
            charaset[10].MaATK = 0;
            charaset[10].PhyDEF = 0;
            charaset[10].MaDEF = 0;
            charaset[10].Interval = 10;
            charaset[10].EffectTime = 0;
            charaset[10].Tp = 140;
            charaset[10].Position = 360;

            //水ヒヨリ
            charaset[11].Picture = プリコネ_バフ_デバフ_.Properties.Resources.mizuhiyori;
            charaset[11].Sutan = 0;
            charaset[11].SkillName1 = "肉球スプラッシュ";
            charaset[11].PhyATK = 455;
            charaset[11].MaATK = 0;
            charaset[11].PhyDEF = 0;
            charaset[11].MaDEF = 0;
            charaset[11].Interval = 10;
            charaset[11].EffectTime = 0;
            charaset[11].Tp = 0;
            charaset[11].Position = 310;

            //水ノゾミ
            charaset[12].Picture = プリコネ_バフ_デバフ_.Properties.Resources.mizunozomi;
            charaset[12].Sutan = 0;
            charaset[12].SkillName1 = "サマーアイドルエール";
            charaset[12].PhyATK = 4368;
            charaset[12].MaATK = 0;
            charaset[12].PhyDEF = 146;
            charaset[12].MaDEF = 146;
            charaset[12].Interval = 10;
            charaset[12].EffectTime = 0;
            charaset[12].Tp = 0;
            charaset[12].Position = 230;

            //水サレン
            charaset[13].Picture = プリコネ_バフ_デバフ_.Properties.Resources.mizusarenn;
            charaset[13].Sutan = 0;
            charaset[13].SkillName1 = "スプラッシュトワリング";
            charaset[13].PhyATK = 3276;
            charaset[13].MaATK = 3276;
            charaset[13].PhyDEF = 0;
            charaset[13].MaDEF = 0;
            charaset[13].Interval = 10;
            charaset[13].EffectTime = 0;
            charaset[13].Tp = 445;
            charaset[13].Position = 160;
            //水シズル
            charaset[14].Picture = プリコネ_バフ_デバフ_.Properties.Resources.mizusizuru;
            charaset[14].Sutan = 0;
            charaset[14].SkillName1 = "ブルーウェービング";
            charaset[14].PhyATK = 910;
            charaset[14].MaATK = 0;
            charaset[14].PhyDEF = 246;
            charaset[14].MaDEF = 0;
            charaset[14].Interval = 10;
            charaset[14].EffectTime = 0;
            charaset[14].Tp = 0;
            charaset[14].Position = 380;

            //水ユイ
            charaset[15].Picture = プリコネ_バフ_デバフ_.Properties.Resources.mizuyui;
            charaset[15].Sutan = 0;
            charaset[15].SkillName1 = "マリンコンフィデンス";
            charaset[15].PhyATK = 0;
            charaset[15].MaATK = 728;
            charaset[15].PhyDEF = 0;
            charaset[15].MaDEF = 0;
            charaset[15].Interval = 10;
            charaset[15].EffectTime = 0;
            charaset[15].Tp = 0;
            charaset[15].Position = 200;

            //モニカ
            charaset[16].Picture = プリコネ_バフ_デバフ_.Properties.Resources.monika;
            charaset[16].Sutan = 0;
            charaset[16].SkillName1 = "フリューゲルエール";
            charaset[16].PhyATK = 7248;
            charaset[16].MaATK = 7248;
            charaset[16].PhyDEF = 0;
            charaset[16].MaDEF = 0;
            charaset[16].Interval = 10;
            charaset[16].EffectTime = 0;
            charaset[16].Tp = 0;
            charaset[16].Position = 240;

            //ネネカ
            charaset[17].Picture = プリコネ_バフ_デバフ_.Properties.Resources.neneka;
            charaset[17].Sutan = 1;
            charaset[17].SkillName1 = "サチュレイト・レイ";
            charaset[17].PhyATK = 0;
            charaset[17].MaATK = 0;
            charaset[17].PhyDEF = 0;
            charaset[17].MaDEF = -37;
            charaset[17].Interval = 10;
            charaset[17].EffectTime = 0;
            charaset[17].Tp = 0;
            charaset[17].Position = 130;

            //闇クウカ
            charaset[18].Picture = プリコネ_バフ_デバフ_.Properties.Resources.yamikuuka;
            charaset[18].Sutan = 0;
            charaset[18].SkillName1 = "ドM・シェアリング";
            charaset[18].PhyATK = 0;
            charaset[18].MaATK = 5096;
            charaset[18].PhyDEF = 0;
            charaset[18].MaDEF = 0;
            charaset[18].Interval = 10;
            charaset[18].EffectTime = 0;
            charaset[18].Tp = 0;
            charaset[18].Position = 420;

            //ノウェム
            charaset[19].Picture = プリコネ_バフ_デバフ_.Properties.Resources.nowemu;
            charaset[19].Sutan = 1;
            charaset[19].SkillName1 = "ビビらせてやる";
            charaset[19].PhyATK = 0;
            charaset[19].MaATK = 0;
            charaset[19].PhyDEF = 0;
            charaset[19].MaDEF = 0;
            charaset[19].Interval = 10;
            charaset[19].EffectTime = 0;
            charaset[19].Tp = 0;
            charaset[19].Position = 390;

            //ニャル
            charaset[20].Picture = プリコネ_バフ_デバフ_.Properties.Resources.nyaru;
            charaset[20].Sutan = 0;
            charaset[20].SkillName1 = "シャドウバレット";
            charaset[20].PhyATK = 0;
            charaset[20].MaATK = 0;
            charaset[20].PhyDEF = 0;
            charaset[20].MaDEF = 0;
            charaset[20].Interval = 10;
            charaset[20].EffectTime = 0;
            charaset[20].Tp = 0;
            charaset[20].Position = 120;

            //ニュフィ
            charaset[21].Picture = プリコネ_バフ_デバフ_.Properties.Resources.nyufi;
            charaset[21].Sutan = 0;
            charaset[21].SkillName1 = "春沓";
            charaset[21].PhyATK = 1365;
            charaset[21].MaATK = 0;
            charaset[21].PhyDEF = 0;
            charaset[21].MaDEF = 0;
            charaset[21].Interval = 10;
            charaset[21].EffectTime = 0;
            charaset[21].Tp = 0;
            charaset[21].Position = 300;

            //ニュイミ
            charaset[22].Picture = プリコネ_バフ_デバフ_.Properties.Resources.nyuimi;
            charaset[22].Sutan = 0;
            charaset[22].SkillName1 = "どけぇー";
            charaset[22].PhyATK = 0;
            charaset[22].MaATK = 0;
            charaset[22].PhyDEF = -109;
            charaset[22].MaDEF = 0;
            charaset[22].Interval = 10;
            charaset[22].EffectTime = 0;
            charaset[22].Tp = 0;
            charaset[22].Position = 430;

            //ニュネカ
            charaset[23].Picture = プリコネ_バフ_デバフ_.Properties.Resources.nyuneka;
            charaset[23].Sutan = 0;
            charaset[23].SkillName1 = "フラワーブレッシング";
            charaset[23].PhyATK = 0;
            charaset[23].MaATK = 3640;
            charaset[23].PhyDEF = 0;
            charaset[23].MaDEF = 0;
            charaset[23].Interval = 10;
            charaset[23].EffectTime = 0;
            charaset[23].Tp = 127;
            charaset[23].Position = 170;

            //ニュペコ
            charaset[24].Picture = プリコネ_バフ_デバフ_.Properties.Resources.nyupeko;
            charaset[24].Sutan = 0;
            charaset[24].SkillName1 = "ダイフクタイム";
            charaset[24].PhyATK = 1638;
            charaset[24].MaATK = 0;
            charaset[24].PhyDEF = 0;
            charaset[24].MaDEF = 0;
            charaset[24].Interval = 10;
            charaset[24].EffectTime = 0;
            charaset[24].Tp = 211;
            charaset[24].Position = 340;

            //オバペコ
            charaset[25].Picture = プリコネ_バフ_デバフ_.Properties.Resources.obapeko;
            charaset[25].Sutan = 0;
            charaset[25].SkillName1 = "リミッターオーバーライト";
            charaset[25].PhyATK = 3628;
            charaset[25].MaATK = 0;
            charaset[25].PhyDEF = 0;
            charaset[25].MaDEF = 0;
            charaset[25].Interval = 10;
            charaset[25].EffectTime = 0;
            charaset[25].Tp = 0;
            charaset[25].Position = 370;

            //オバラビ
            charaset[26].Picture = プリコネ_バフ_デバフ_.Properties.Resources.obarabi;
            charaset[26].Sutan = 0;
            charaset[26].SkillName1 = "アドベントカレッジ";
            charaset[26].PhyATK = 1638;
            charaset[26].MaATK = 0;
            charaset[26].PhyDEF = 0;
            charaset[26].MaDEF = 0;
            charaset[26].Interval = 10;
            charaset[26].EffectTime = 0;
            charaset[26].Tp = 140;
            charaset[26].Sutan = 0;
            charaset[26].Position = 320;

            //ハツシオ
            charaset[27].Picture = プリコネ_バフ_デバフ_.Properties.Resources.hatusio;
            charaset[27].Sutan = 0;
            charaset[27].SkillName1 = "スターライトシュート";
            charaset[27].PhyATK = 0;
            charaset[27].MaATK = 0;
            charaset[27].PhyDEF = 0;
            charaset[27].MaDEF = 0;
            charaset[27].Interval = 10;
            charaset[27].EffectTime = 0;
            charaset[27].Tp = 240;
            charaset[27].Position = 100;

            //オユキ
            charaset[28].Picture = プリコネ_バフ_デバフ_.Properties.Resources.oyuki;
            charaset[28].Sutan = 0;
            charaset[28].SkillName1 = "天使の僕が癒しちゃう♪";
            charaset[28].PhyATK = 0;
            charaset[28].MaATK = 0;
            charaset[28].PhyDEF = 0;
            charaset[28].MaDEF = 0;
            charaset[28].Interval = 10;
            charaset[28].EffectTime = 0;
            charaset[28].Tp = 0;
            charaset[28].Position = 40;

            //プリコロ
            charaset[29].Picture = プリコネ_バフ_デバフ_.Properties.Resources.purikoro;
            charaset[29].Sutan = 0;
            charaset[29].SkillName1 = "エアロヒーリング";
            charaset[29].PhyATK = 0;
            charaset[29].MaATK = 0;
            charaset[29].PhyDEF = 0;
            charaset[29].MaDEF = 0;
            charaset[29].Interval = 10;
            charaset[29].EffectTime = 0;
            charaset[29].Tp = 0;
            charaset[29].Position = 190;

            //プリキャル
            charaset[30].Picture = プリコネ_バフ_デバフ_.Properties.Resources.purikyaru;
            charaset[30].Sutan = 0;
            charaset[30].SkillName1 = "カラミティサンダー";
            charaset[30].PhyATK = 0;
            charaset[30].MaATK = 0;
            charaset[30].PhyDEF = 0;
            charaset[30].MaDEF = -137;
            charaset[30].Interval = 10;
            charaset[30].EffectTime = 0;
            charaset[30].Tp = 0;
            charaset[30].Position = 90;

            //プリペコ
            charaset[31].Picture = プリコネ_バフ_デバフ_.Properties.Resources.puripeko;
            charaset[31].Sutan = 0;
            charaset[31].SkillName1 = "おにぎりタイム";
            charaset[31].PhyATK = 7280;
            charaset[31].MaATK = 0;
            charaset[31].PhyDEF = 0;
            charaset[31].MaDEF = 0;
            charaset[31].Interval = 10;
            charaset[31].EffectTime = 0;
            charaset[31].Tp = 0;
            charaset[31].Position = 400;

            //プリレイ
            charaset[32].Picture = プリコネ_バフ_デバフ_.Properties.Resources.purirei;
            charaset[32].Sutan = 0;
            charaset[32].SkillName1 = "トィンクルエッジ";
            charaset[32].PhyATK = 1820;
            charaset[32].MaATK = 0;
            charaset[32].PhyDEF = 0;
            charaset[32].MaDEF = 0;
            charaset[32].Interval = 10;
            charaset[32].EffectTime = 0;
            charaset[32].Tp = 0;
            charaset[32].Position = 270;

            //プリユイ
            charaset[33].Picture = プリコネ_バフ_デバフ_.Properties.Resources.puriyui;
            charaset[33].Sutan = 0;
            charaset[33].SkillName1 = "トィンクルブースト";
            charaset[33].PhyATK = 0;
            charaset[33].MaATK = 1456;
            charaset[33].PhyDEF = 0;
            charaset[33].MaDEF = 0;
            charaset[33].Interval = 10;
            charaset[33].EffectTime = 0;
            charaset[33].Tp = 422;
            charaset[33].Position = 70;


            //プヨリ
            charaset[34].Picture = プリコネ_バフ_デバフ_.Properties.Resources.puyori;
            charaset[34].Sutan = 0;
            charaset[34].SkillName1 = "トィンクブレイブ";
            charaset[34].PhyATK = 2275;
            charaset[34].MaATK = 0;
            charaset[34].PhyDEF = 0;
            charaset[34].MaDEF = 0;
            charaset[34].Interval = 10;
            charaset[34].EffectTime = 0;
            charaset[34].Tp = 0;
            charaset[34].Position = 350;

            //ラビリスタ
            charaset[35].Picture = プリコネ_バフ_デバフ_.Properties.Resources.rabirisuta;
            charaset[35].Sutan = 0;
            charaset[35].SkillName1 = "オプティマイズ";
            charaset[35].PhyATK = 1820;
            charaset[35].MaATK = 0;
            charaset[35].PhyDEF = 0;
            charaset[35].MaDEF = 0;
            charaset[35].Interval = 10;
            charaset[35].EffectTime = 0;
            charaset[35].Tp = 0;
            charaset[35].Position = 180;

            //ランファ
            charaset[36].Picture = プリコネ_バフ_デバフ_.Properties.Resources.rannfa;
            charaset[36].Sutan = 0;
            charaset[36].SkillName1 = "ミスティックハーモニー";
            charaset[36].PhyATK = 0;
            charaset[36].MaATK = 2184;
            charaset[36].PhyDEF = 0;
            charaset[36].MaDEF = 0;
            charaset[36].Interval = 10;
            charaset[36].EffectTime = 0;
            charaset[36].Tp = 0;
            charaset[36].Position = 60;

            //レイ
            charaset[37].Picture = プリコネ_バフ_デバフ_.Properties.Resources.rei;
            charaset[37].Sutan = 0;
            charaset[37].SkillName1 = "ウィンドスラスト";
            charaset[37].PhyATK = 0;
            charaset[37].MaATK = 0;
            charaset[37].PhyDEF = -110;
            charaset[37].MaDEF = 0;
            charaset[37].Interval = 10;
            charaset[37].EffectTime = 0;
            charaset[37].Tp = 0;
            charaset[37].Position = 330;

            //サオイ
            charaset[38].Picture = プリコネ_バフ_デバフ_.Properties.Resources.saoi;
            charaset[38].Sutan = 0;
            charaset[38].SkillName1 = "ポイゾナスバレット";
            charaset[38].PhyATK = 0;
            charaset[38].MaATK = 0;
            charaset[38].PhyDEF = 0;
            charaset[38].MaDEF = -91;
            charaset[38].Interval = 10;
            charaset[38].EffectTime = 0;
            charaset[38].Tp = 0;
            charaset[38].Position = 210;

            //サレン
            charaset[39].Picture = プリコネ_バフ_デバフ_.Properties.Resources.sarenn;
            charaset[39].Sutan = 0;
            charaset[39].SkillName1 = "サレン";
            charaset[39].PhyATK = 0;
            charaset[39].MaATK = 0;
            charaset[39].PhyDEF = 0;
            charaset[39].MaDEF = 0;
            charaset[39].Interval = 10;
            charaset[39].EffectTime = 0;
            charaset[39].Tp = 0;
            charaset[39].Position = 220;

            //ユイ
            charaset[40].Picture = プリコネ_バフ_デバフ_.Properties.Resources.yui;
            charaset[40].Sutan = 0;
            charaset[40].SkillName1 = "フラワーショット";
            charaset[40].PhyATK = -1365;
            charaset[40].MaATK = 0;
            charaset[40].PhyDEF = 0;
            charaset[40].MaDEF = 0;
            charaset[40].Interval = 10;
            charaset[40].EffectTime = 0;
            charaset[40].Tp = 0;
            charaset[40].Position = 30;

            //ユカリ
            charaset[41].Picture = プリコネ_バフ_デバフ_.Properties.Resources.yukari;
            charaset[41].Sutan = 0;
            charaset[41].SkillName1 = "アクアヴィット";
            charaset[41].PhyATK = 0;
            charaset[41].MaATK = 0;
            charaset[41].PhyDEF = 0;
            charaset[41].MaDEF = 146;
            charaset[41].Interval = 10;
            charaset[41].EffectTime = 0;
            charaset[41].Tp = 0;
            charaset[41].Position = 260;

            //ユニ
            charaset[42].Picture = プリコネ_バフ_デバフ_.Properties.Resources.yuni;
            charaset[42].Sutan = 0;
            charaset[42].SkillName1 = "豪傑生成論";
            charaset[42].PhyATK = 5460;
            charaset[42].MaATK = 0;
            charaset[42].PhyDEF = 0;
            charaset[42].MaDEF = 0;
            charaset[42].Interval = 10;
            charaset[42].EffectTime = 0;
            charaset[42].Tp = 127;
            charaset[42].Position = 20;

            return charaset[i];
        }
    }

    class Charaselect_form : Form
    {

        Form1.Set chara = new Form1.Set[43];

        PictureBox CharaSamune = new PictureBox[43];

        Panel CharaPanel = new Panel();


        int CharaX = new int[100];
        int
CharaY = new int[100];
        int i;
        public Charaselect_form()
        {
            CharaX[0] = 5;
            CharaY[0] = 0;

            this.Text = "キャラセレクト";
            this.Size = new Size(750, 700);
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            this.ShowInTaskbar = false;
            this.FormBorderStyle = FormBorderStyle.FixedDialog;

            CharaPanel.AutoScroll = true;

            CharaPanel.Location = new Point(0, 0);
            CharaPanel.Dock = DockStyle.Fill;

            int count = 1;
            for (i = 0; i < Form1.CharaCount; i++)
            {
                CharaSamune[i] = new PictureBox()
                {
                    Size = new Size(129, 129),
                    Image = new Bitmap(Form1.SelectChara[i].Picture),
                };
                CharaSamune[i].Location = new Point(CharaX[i], CharaY[i]);

                CharaSamune[i].Click += new EventHandler(chara_click);

                CharaPanel.Controls.Add(CharaSamune[i]);

                CharaX[i + 1] = CharaX[i] + 138;
                CharaY[i + 1] = CharaY[i];

                if ((i + 1) == 5 * count)
                {
                    CharaY[i + 1] = CharaY[i] + 140;
                    CharaX[i + 1] = 5;
                    count++;
                }
            }

            this.FormClosing += new FormClosingEventHandler(charaselect_close);

            this.Controls.Add(CharaPanel);
        }

        void chara_click(object sender, EventArgs e)
        {
            int Creturn = 10;
            for (i = 0; i < Form1.CharaCount; i++)
            {
                if (sender == CharaSamune[i])
                {
                    Creturn = i;
                }
            }
            Form1.CharaMove(0,Creturn * 129 + Creturn * 10 - (129 + 6) * 3);
        }

        void charaselect_close(object sender, FormClosingEventArgs e)
        {
            Form1.charaform = true;
        }
    }
}

キャラクターの順番を観れるようにしました

キャラクターを編成したときの順番通りに画像を表示しました

デフォルトはこの状態にして、別のキャラ選択ウィンドウでキャラクターを選択すると、そのキャラの前後のキャラクターが表示されるようにしたい。

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing;
using System.Timers;
using プリコネ_バフ_デバフ;


namespace プリコネ_バフ_デバフ
{
    internal static class Program
    {
        [STAThread]
        static void Main()
        {

            Application.EnableVisualStyles();
            //Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }

    class Form1 : Form
    {

        int scroll = 0;
        int Cscroll = 0;
        int scrollpicT = 100, scrollpicY = 200, countX = 1125, countY = 10;

        PictureBox scrpic = new PictureBox();
        Bitmap scrpicture;

        Label buff = new Label();
        Button buffbutton = new Button();

        Label count = new Label();
        int Bcount = 90;

        Button start = new Button();
        System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();

        Button charaselect = new Button();
        public static bool charaform = true;

        Set charaset = new Set[100];


        Panel ScrollPanel = new Panel();
        PictureBox CharaPosition = new PictureBox[43];
        Set CG = new Set();
        int? CP = new int?[100];
        int table = 0;

        int CharaCount = 0;
        int i = 0;

        public Form1()
        {
            this.Size = new Size(1200, 600);

            this.Location = new Point(0, 0);
            this.Dock = DockStyle.Fill;

            scrpicture = new Bitmap(@"C:\Users\username\Desktop\c#\プリコネ<バフ・デバフ>\バフ.png");
            scrpic = new PictureBox()
            {
                Image = scrpicture,
                SizeMode = PictureBoxSizeMode.AutoSize,
            };
            scrpic.Location = new System.Drawing.Point(scrollpicT, scrollpicY);
            scrpic.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.buff_MouseWheel);
            this.Controls.Add(scrpic);

            buff.Location = new System.Drawing.Point(scrollpicT + 30, scrollpicY);
            buff.Size = new Size(84, 24);
            buff.Font = new Font("Arial", 12);
            buff.Text = "バフ:";
            buff.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.buff_MouseWheel);
            this.Controls.Add(buff);

            //バフボタン設定
            buffbutton.Text = "バフ";
            buffbutton.Location = new System.Drawing.Point(10, 150);
            buffbutton.Size = new System.Drawing.Size(50, 30);
            this.Controls.Add(buffbutton);

            timer.Interval = 1000;
            timer.Tick += new EventHandler(Battle_Clock);

            start.Location = new System.Drawing.Point(countX, countY + 24);
            start.Size = new System.Drawing.Size(50, 30);
            start.Text = "開始";
            start.Click += new EventHandler(start_click);
            this.Controls.Add(start);

            count.Location = new System.Drawing.Point(countX, countY);
            count.AutoSize = true;
            count.Font = new Font("Arial", 12);
            count.Text = string.Format("{0}:{1:D5}", (Bcount / 60).ToString(), (Bcount - (Bcount / 60) * 60).ToString("00"));
            this.Controls.Add(count);

            charaselect = new Button()
            {
                Text = "キャラ",
                Location = new Point(1110, 100),
            };
            charaselect.Click += new EventHandler(Charaform);
            this.Controls.Add(charaselect);

            ScrollPanel.BorderStyle = BorderStyle.FixedSingle;
            ScrollPanel.Location = new Point(85, 295);
            ScrollPanel.Size = new Size(980, 150);

            i = 0;
            while (true)
            {
                Set chara = charaskill(i);
                if (chara.SkillName1 != null)
                {
                    CharaCount++;
                }
                else
                {
                    break;
                }
                i++;
            }

            //ポジション数、整列
            Set Cposition = new Set[CharaCount];
            Set Cposition2 = new Set();
            int position = new int[CharaCount];
            int x;
            bool LoopCheck=false;
            for (i = 0; i < CharaCount; i++)
            {
                Cposition[i] = charaskill(i);
                position[i] = Cposition[i].Position;
            }
            while (true)
            {
                LoopCheck = true;
                for (i = 0; i < CharaCount - 1; i++)
                {

                    if (position[i] > position[i + 1])
                    {
                        x = position[i + 1];
                        position[i + 1] = position[i];
                        position[i] = x;

                        Cposition2 = Cposition[i + 1];
                        Cposition[i + 1] = Cposition[i];
                        Cposition[i] = Cposition2;

                        LoopCheck = false;
                    }
                    else
                    {

                    }
                }
                if (LoopCheck)
                {
                    break;
                }
            }

            for (int i = 0; i < CharaCount; i++)
            {
                CP[i] = Cposition[i].Position;

                int CP2 = (int)CP[i] * 194 + 298;

                if (CP[i] != null)
                {
                    CharaPosition[table] = new PictureBox()
                    {
                        Image = new Bitmap(Cposition[i].Picture),
                        SizeMode = PictureBoxSizeMode.AutoSize,
                        Location = new Point(table * 129 + 10 * (table + 1), 10),
                    };
                    ScrollPanel.Controls.Add(CharaPosition[table]);
                    table++;
                }
            }
            ScrollPanel.MouseWheel += new MouseEventHandler(CharaScroll);

 

            this.Controls.Add(ScrollPanel);


        }

        private void CharaScroll(object sender, MouseEventArgs e)
        {
            if (e.Delta >= 0)
            {
                if (Cscroll <= (CharaCount - 7) * 129 + 10 * (CharaCount + 1 - 7))
                {
                    Cscroll += e.Delta;
                }
            }
            else
            {
                if (Cscroll < 10)
                {
                    Cscroll = 0;
                }
                else
                {
                    Cscroll += e.Delta;
                }
            }

            for (int i = 0; i < 43; i++)
            {
                CharaPosition[i].Location = new Point(i * 129 + 10 * (i + 1) - Cscroll, 10);
                ScrollPanel.Controls.Add(CharaPosition[i]);
            }
        }

        private void buff_MouseWheel(object sender, MouseEventArgs e)
        {
            scroll += e.Delta;
            if (scroll < 0)
            {
                scroll = 0;
            }
            buff.Text = "バフ量:" + (scroll / 120).ToString();
        }


        private void Battle_Clock(object sender, EventArgs e)
        {
            Bcount -= 1;
            if (Bcount <= 0)
            {
                Bcount = 0;
                timer.Enabled = false;
            }
            count.Text = string.Format("{0}:{1:D5}", (Bcount / 60).ToString(), (Bcount - (Bcount / 60) * 60).ToString("00"));
            this.Controls.Add(count);
        }

        private void Charaform(object sender, EventArgs e)
        {
            if (charaform)
            {
                Cform();
            }
            charaform = false;
        }

        private void Cform()
        {
            charaform = false;
            Charaselect_form charaselect_form = new Charaselect_form();
            charaselect_form.Show();
        }
        private void start_click(object sender, EventArgs e)
        {
            timer.Enabled = true;
        }

        public struct Set
        {
            public string SkillName1;
            public Bitmap Picture;
            public int PhyDEF;              //物理防御
            public int MaDEF;               //魔法防御
            public int PhyATK;              //物理攻撃力
            public int MaATK;               //魔法防御力
            public int Tp;                  //TP回復・減少
            public int Sutan;               //スタン
            public int Interval;            //スキル頻度
            public int EffectTime;          //スキル効果時間
            public int Position;         //立ち位置
            //public int speed;               //行動速度アップ・ダウン
        }

        public Set charaskill(int i)
        {
            //UntiBuffがマイナスなら魔法デバフ、プラスなら物理デバフ

            //おばキャルレベル179の時とりあえず、スタンやバフデバフ表示のみ
            charaset[0].Picture = プリコネ_バフ_デバフ_.Properties.Resources.obakyal;
            charaset[0].SkillName1 = "ダークボルテックス";
            charaset[0].PhyATK = 0;
            charaset[0].MaATK = 0;
            charaset[0].PhyDEF = 0;
            charaset[0].MaDEF = 0;
            charaset[0].Interval = 10;
            charaset[0].EffectTime = 0;
            charaset[0].Tp = -140;
            charaset[0].Sutan = 0;
            charaset[0].Position = 150;

            //アン
            charaset[1].Picture = プリコネ_バフ_デバフ_.Properties.Resources.ann;
            charaset[1].SkillName1 = "コリジョンスペル";
            charaset[1].PhyATK = 0;
            charaset[1].MaATK = 0;
            charaset[1].PhyDEF = 0;
            charaset[1].MaDEF = 0;
            charaset[1].Interval = 10;
            charaset[1].EffectTime = 0;
            charaset[1].Tp = 100;
            //charaset[1].speed = 50;
            charaset[1].Position = 140;

            //ホマレ
            charaset[2].Picture = プリコネ_バフ_デバフ_.Properties.Resources.homare;
            charaset[2].Sutan = 0;
            charaset[2].SkillName1 = "マインドクラック";
            charaset[2].PhyATK = 0;
            charaset[2].MaATK = 0;
            charaset[2].PhyDEF = 0;
            charaset[2].MaDEF = -127;
            charaset[2].Interval = 10;
            charaset[2].EffectTime = 0;
            charaset[2].Tp = 0;
            charaset[2].Position = 110;

            //カイノリ
            charaset[3].Picture = プリコネ_バフ_デバフ_.Properties.Resources.kainori;
            charaset[3].Sutan = 0;
            charaset[3].SkillName1 = "シャドウファング";
            charaset[3].PhyATK = 0;
            charaset[3].MaATK = 0;
            charaset[3].PhyDEF = 0;
            charaset[3].MaDEF = 0;
            charaset[3].Interval = 10;
            charaset[3].EffectTime = 0;
            charaset[3].Tp = 80;
            charaset[3].Position = 280;

            //クレジッタ
            charaset[4].Picture = プリコネ_バフ_デバフ_.Properties.Resources.kurezitta;
            charaset[4].Sutan = 0;
            charaset[4].SkillName1 = "トラップウォレット";
            charaset[4].PhyATK = 0;
            charaset[4].MaATK = 0;
            charaset[4].PhyDEF = -50;
            charaset[4].MaDEF = 0;
            charaset[4].Interval = 10;
            charaset[4].EffectTime = 0;
            charaset[4].Tp = 140;
            charaset[4].Position = 80;

            //クリサレン
            charaset[5].Picture = プリコネ_バフ_デバフ_.Properties.Resources.kurisarenn;
            charaset[5].Sutan = 0;
            charaset[5].SkillName1 = "アメイジングギフト";
            charaset[5].PhyATK = 4368;
            charaset[5].MaATK = 4368;
            charaset[5].PhyDEF = 110;
            charaset[5].MaDEF = 110;
            charaset[5].Interval = 10;
            charaset[5].EffectTime = 0;
            charaset[5].Tp = 0;
            charaset[5].Position = 410;

            //クリスティーナ
            charaset[6].Picture = プリコネ_バフ_デバフ_.Properties.Resources.kurisuthina;
            charaset[6].Sutan = 0;
            charaset[6].SkillName1 = "オーバーレイ";
            charaset[6].PhyATK = 6912;
            charaset[6].MaATK = 0;
            charaset[6].PhyDEF = 0;
            charaset[6].MaDEF = 0;
            charaset[6].Interval = 10;
            charaset[6].EffectTime = 0;
            charaset[6].Tp = 437;
            charaset[6].Position = 290;

            //クリユカリ
            charaset[7].Picture = プリコネ_バフ_デバフ_.Properties.Resources.kuriyukari;
            charaset[7].Sutan = 0;
            charaset[7].SkillName1 = "ペールムーン";
            charaset[7].PhyATK = 0;
            charaset[7].MaATK = 0;
            charaset[7].PhyDEF = -164;
            charaset[7].MaDEF = 0;
            charaset[7].Interval = 10;
            charaset[7].EffectTime = 0;
            charaset[7].Tp = -211;
            charaset[7].Position = 250;

            //キョウカ
            charaset[8].Picture = プリコネ_バフ_デバフ_.Properties.Resources.kyouka;
            charaset[8].Sutan = 0;
            charaset[8].SkillName1 = "アイスランス";
            charaset[8].PhyATK = 0;
            charaset[8].MaATK = 0;
            charaset[8].PhyDEF = 0;
            charaset[8].MaDEF = 0;
            charaset[8].Interval = 10;
            charaset[8].EffectTime = 0;
            charaset[8].Tp = 0;
            charaset[8].Position = 10;

            //マホ
            charaset[9].Picture = プリコネ_バフ_デバフ_.Properties.Resources.maho;
            charaset[9].Sutan = 0;
            charaset[9].SkillName1 = "マホまほひーる";
            charaset[9].PhyATK = 0;
            charaset[9].MaATK = 0;
            charaset[9].PhyDEF = 0;
            charaset[9].MaDEF = 182;
            charaset[9].Interval = 10;
            charaset[9].EffectTime = 0;
            charaset[9].Tp = 0;
            charaset[9].Position = 50;

            //マコト
            charaset[10].Picture = プリコネ_バフ_デバフ_.Properties.Resources.makoto;
            charaset[10].Sutan = 0;
            charaset[10].SkillName1 = "ハードスラッシュ";
            charaset[10].PhyATK = 1365;
            charaset[10].MaATK = 0;
            charaset[10].PhyDEF = 0;
            charaset[10].MaDEF = 0;
            charaset[10].Interval = 10;
            charaset[10].EffectTime = 0;
            charaset[10].Tp = 140;
            charaset[10].Position = 360;

            //水ヒヨリ
            charaset[11].Picture = プリコネ_バフ_デバフ_.Properties.Resources.mizuhiyori;
            charaset[11].Sutan = 0;
            charaset[11].SkillName1 = "肉球スプラッシュ";
            charaset[11].PhyATK = 455;
            charaset[11].MaATK = 0;
            charaset[11].PhyDEF = 0;
            charaset[11].MaDEF = 0;
            charaset[11].Interval = 10;
            charaset[11].EffectTime = 0;
            charaset[11].Tp = 0;
            charaset[11].Position = 310;

            //水ノゾミ
            charaset[12].Picture = プリコネ_バフ_デバフ_.Properties.Resources.mizunozomi;
            charaset[12].Sutan = 0;
            charaset[12].SkillName1 = "サマーアイドルエール";
            charaset[12].PhyATK = 4368;
            charaset[12].MaATK = 0;
            charaset[12].PhyDEF = 146;
            charaset[12].MaDEF = 146;
            charaset[12].Interval = 10;
            charaset[12].EffectTime = 0;
            charaset[12].Tp = 0;
            charaset[12].Position = 230;

            //水サレン
            charaset[13].Picture = プリコネ_バフ_デバフ_.Properties.Resources.mizusarenn;
            charaset[13].Sutan = 0;
            charaset[13].SkillName1 = "スプラッシュトワリング";
            charaset[13].PhyATK = 3276;
            charaset[13].MaATK = 3276;
            charaset[13].PhyDEF = 0;
            charaset[13].MaDEF = 0;
            charaset[13].Interval = 10;
            charaset[13].EffectTime = 0;
            charaset[13].Tp = 445;
            charaset[13].Position = 160;
            //水シズル
            charaset[14].Picture = プリコネ_バフ_デバフ_.Properties.Resources.mizusizuru;
            charaset[14].Sutan = 0;
            charaset[14].SkillName1 = "ブルーウェービング";
            charaset[14].PhyATK = 910;
            charaset[14].MaATK = 0;
            charaset[14].PhyDEF = 246;
            charaset[14].MaDEF = 0;
            charaset[14].Interval = 10;
            charaset[14].EffectTime = 0;
            charaset[14].Tp = 0;
            charaset[14].Position = 380;

            //水ユイ
            charaset[15].Picture = プリコネ_バフ_デバフ_.Properties.Resources.mizuyui;
            charaset[15].Sutan = 0;
            charaset[15].SkillName1 = "マリンコンフィデンス";
            charaset[15].PhyATK = 0;
            charaset[15].MaATK = 728;
            charaset[15].PhyDEF = 0;
            charaset[15].MaDEF = 0;
            charaset[15].Interval = 10;
            charaset[15].EffectTime = 0;
            charaset[15].Tp = 0;
            charaset[15].Position = 200;

            //モニカ
            charaset[16].Picture = プリコネ_バフ_デバフ_.Properties.Resources.monika;
            charaset[16].Sutan = 0;
            charaset[16].SkillName1 = "フリューゲルエール";
            charaset[16].PhyATK = 7248;
            charaset[16].MaATK = 7248;
            charaset[16].PhyDEF = 0;
            charaset[16].MaDEF = 0;
            charaset[16].Interval = 10;
            charaset[16].EffectTime = 0;
            charaset[16].Tp = 0;
            charaset[16].Position = 240;

            //ネネカ
            charaset[17].Picture = プリコネ_バフ_デバフ_.Properties.Resources.neneka;
            charaset[17].Sutan = 1;
            charaset[17].SkillName1 = "サチュレイト・レイ";
            charaset[17].PhyATK = 0;
            charaset[17].MaATK = 0;
            charaset[17].PhyDEF = 0;
            charaset[17].MaDEF = -37;
            charaset[17].Interval = 10;
            charaset[17].EffectTime = 0;
            charaset[17].Tp = 0;
            charaset[17].Position = 130;

            //闇クウカ
            charaset[18].Picture = プリコネ_バフ_デバフ_.Properties.Resources.yamikuuka;
            charaset[18].Sutan = 0;
            charaset[18].SkillName1 = "ドM・シェアリング";
            charaset[18].PhyATK = 0;
            charaset[18].MaATK = 5096;
            charaset[18].PhyDEF = 0;
            charaset[18].MaDEF = 0;
            charaset[18].Interval = 10;
            charaset[18].EffectTime = 0;
            charaset[18].Tp = 0;
            charaset[18].Position = 420;

            //ノウェム
            charaset[19].Picture = プリコネ_バフ_デバフ_.Properties.Resources.nowemu;
            charaset[19].Sutan = 1;
            charaset[19].SkillName1 = "ビビらせてやる";
            charaset[19].PhyATK = 0;
            charaset[19].MaATK = 0;
            charaset[19].PhyDEF = 0;
            charaset[19].MaDEF = 0;
            charaset[19].Interval = 10;
            charaset[19].EffectTime = 0;
            charaset[19].Tp = 0;
            charaset[19].Position = 390;

            //ニャル
            charaset[20].Picture = プリコネ_バフ_デバフ_.Properties.Resources.nyaru;
            charaset[20].Sutan = 0;
            charaset[20].SkillName1 = "シャドウバレット";
            charaset[20].PhyATK = 0;
            charaset[20].MaATK = 0;
            charaset[20].PhyDEF = 0;
            charaset[20].MaDEF = 0;
            charaset[20].Interval = 10;
            charaset[20].EffectTime = 0;
            charaset[20].Tp = 0;
            charaset[20].Position = 120;

            //ニュフィ
            charaset[21].Picture = プリコネ_バフ_デバフ_.Properties.Resources.nyufi;
            charaset[21].Sutan = 0;
            charaset[21].SkillName1 = "春沓";
            charaset[21].PhyATK = 1365;
            charaset[21].MaATK = 0;
            charaset[21].PhyDEF = 0;
            charaset[21].MaDEF = 0;
            charaset[21].Interval = 10;
            charaset[21].EffectTime = 0;
            charaset[21].Tp = 0;
            charaset[21].Position = 300;

            //ニュイミ
            charaset[22].Picture = プリコネ_バフ_デバフ_.Properties.Resources.nyuimi;
            charaset[22].Sutan = 0;
            charaset[22].SkillName1 = "どけぇー";
            charaset[22].PhyATK = 0;
            charaset[22].MaATK = 0;
            charaset[22].PhyDEF = -109;
            charaset[22].MaDEF = 0;
            charaset[22].Interval = 10;
            charaset[22].EffectTime = 0;
            charaset[22].Tp = 0;
            charaset[22].Position = 430;

            //ニュネカ
            charaset[23].Picture = プリコネ_バフ_デバフ_.Properties.Resources.nyuneka;
            charaset[23].Sutan = 0;
            charaset[23].SkillName1 = "フラワーブレッシング";
            charaset[23].PhyATK = 0;
            charaset[23].MaATK = 3640;
            charaset[23].PhyDEF = 0;
            charaset[23].MaDEF = 0;
            charaset[23].Interval = 10;
            charaset[23].EffectTime = 0;
            charaset[23].Tp = 127;
            charaset[23].Position = 170;

            //ニュペコ
            charaset[24].Picture = プリコネ_バフ_デバフ_.Properties.Resources.nyupeko;
            charaset[24].Sutan = 0;
            charaset[24].SkillName1 = "ダイフクタイム";
            charaset[24].PhyATK = 1638;
            charaset[24].MaATK = 0;
            charaset[24].PhyDEF = 0;
            charaset[24].MaDEF = 0;
            charaset[24].Interval = 10;
            charaset[24].EffectTime = 0;
            charaset[24].Tp = 211;
            charaset[24].Position = 340;

            //オバペコ
            charaset[25].Picture = プリコネ_バフ_デバフ_.Properties.Resources.obapeko;
            charaset[25].Sutan = 0;
            charaset[25].SkillName1 = "リミッターオーバーライト";
            charaset[25].PhyATK = 3628;
            charaset[25].MaATK = 0;
            charaset[25].PhyDEF = 0;
            charaset[25].MaDEF = 0;
            charaset[25].Interval = 10;
            charaset[25].EffectTime = 0;
            charaset[25].Tp = 0;
            charaset[25].Position = 370;

            //オバラビ
            charaset[26].Picture = プリコネ_バフ_デバフ_.Properties.Resources.obarabi;
            charaset[26].Sutan = 0;
            charaset[26].SkillName1 = "アドベントカレッジ";
            charaset[26].PhyATK = 1638;
            charaset[26].MaATK = 0;
            charaset[26].PhyDEF = 0;
            charaset[26].MaDEF = 0;
            charaset[26].Interval = 10;
            charaset[26].EffectTime = 0;
            charaset[26].Tp = 140;
            charaset[26].Sutan = 0;
            charaset[26].Position = 320;

            //ハツシオ
            charaset[27].Picture = プリコネ_バフ_デバフ_.Properties.Resources.hatusio;
            charaset[27].Sutan = 0;
            charaset[27].SkillName1 = "スターライトシュート";
            charaset[27].PhyATK = 0;
            charaset[27].MaATK = 0;
            charaset[27].PhyDEF = 0;
            charaset[27].MaDEF = 0;
            charaset[27].Interval = 10;
            charaset[27].EffectTime = 0;
            charaset[27].Tp = 240;
            charaset[27].Position = 100;

            //オユキ
            charaset[28].Picture = プリコネ_バフ_デバフ_.Properties.Resources.oyuki;
            charaset[28].Sutan = 0;
            charaset[28].SkillName1 = "天使の僕が癒しちゃう♪";
            charaset[28].PhyATK = 0;
            charaset[28].MaATK = 0;
            charaset[28].PhyDEF = 0;
            charaset[28].MaDEF = 0;
            charaset[28].Interval = 10;
            charaset[28].EffectTime = 0;
            charaset[28].Tp = 0;
            charaset[28].Position = 40;

            //プリコロ
            charaset[29].Picture = プリコネ_バフ_デバフ_.Properties.Resources.purikoro;
            charaset[29].Sutan = 0;
            charaset[29].SkillName1 = "エアロヒーリング";
            charaset[29].PhyATK = 0;
            charaset[29].MaATK = 0;
            charaset[29].PhyDEF = 0;
            charaset[29].MaDEF = 0;
            charaset[29].Interval = 10;
            charaset[29].EffectTime = 0;
            charaset[29].Tp = 0;
            charaset[29].Position = 190;

            //プリキャル
            charaset[30].Picture = プリコネ_バフ_デバフ_.Properties.Resources.purikyaru;
            charaset[30].Sutan = 0;
            charaset[30].SkillName1 = "カラミティサンダー";
            charaset[30].PhyATK = 0;
            charaset[30].MaATK = 0;
            charaset[30].PhyDEF = 0;
            charaset[30].MaDEF = -137;
            charaset[30].Interval = 10;
            charaset[30].EffectTime = 0;
            charaset[30].Tp = 0;
            charaset[30].Position = 90;

            //プリペコ
            charaset[31].Picture = プリコネ_バフ_デバフ_.Properties.Resources.puripeko;
            charaset[31].Sutan = 0;
            charaset[31].SkillName1 = "おにぎりタイム";
            charaset[31].PhyATK = 7280;
            charaset[31].MaATK = 0;
            charaset[31].PhyDEF = 0;
            charaset[31].MaDEF = 0;
            charaset[31].Interval = 10;
            charaset[31].EffectTime = 0;
            charaset[31].Tp = 0;
            charaset[31].Position = 400;

            //プリレイ
            charaset[32].Picture = プリコネ_バフ_デバフ_.Properties.Resources.purirei;
            charaset[32].Sutan = 0;
            charaset[32].SkillName1 = "トィンクルエッジ";
            charaset[32].PhyATK = 1820;
            charaset[32].MaATK = 0;
            charaset[32].PhyDEF = 0;
            charaset[32].MaDEF = 0;
            charaset[32].Interval = 10;
            charaset[32].EffectTime = 0;
            charaset[32].Tp = 0;
            charaset[32].Position = 270;

            //プリユイ
            charaset[33].Picture = プリコネ_バフ_デバフ_.Properties.Resources.puriyui;
            charaset[33].Sutan = 0;
            charaset[33].SkillName1 = "トィンクルブースト";
            charaset[33].PhyATK = 0;
            charaset[33].MaATK = 1456;
            charaset[33].PhyDEF = 0;
            charaset[33].MaDEF = 0;
            charaset[33].Interval = 10;
            charaset[33].EffectTime = 0;
            charaset[33].Tp = 422;
            charaset[33].Position = 70;


            //プヨリ
            charaset[34].Picture = プリコネ_バフ_デバフ_.Properties.Resources.puyori;
            charaset[34].Sutan = 0;
            charaset[34].SkillName1 = "トィンクブレイブ";
            charaset[34].PhyATK = 2275;
            charaset[34].MaATK = 0;
            charaset[34].PhyDEF = 0;
            charaset[34].MaDEF = 0;
            charaset[34].Interval = 10;
            charaset[34].EffectTime = 0;
            charaset[34].Tp = 0;
            charaset[34].Position = 350;

            //ラビリスタ
            charaset[35].Picture = プリコネ_バフ_デバフ_.Properties.Resources.rabirisuta;
            charaset[35].Sutan = 0;
            charaset[35].SkillName1 = "オプティマイズ";
            charaset[35].PhyATK = 1820;
            charaset[35].MaATK = 0;
            charaset[35].PhyDEF = 0;
            charaset[35].MaDEF = 0;
            charaset[35].Interval = 10;
            charaset[35].EffectTime = 0;
            charaset[35].Tp = 0;
            charaset[35].Position = 180;

            //ランファ
            charaset[36].Picture = プリコネ_バフ_デバフ_.Properties.Resources.rannfa;
            charaset[36].Sutan = 0;
            charaset[36].SkillName1 = "ミスティックハーモニー";
            charaset[36].PhyATK = 0;
            charaset[36].MaATK = 2184;
            charaset[36].PhyDEF = 0;
            charaset[36].MaDEF = 0;
            charaset[36].Interval = 10;
            charaset[36].EffectTime = 0;
            charaset[36].Tp = 0;
            charaset[36].Position = 60;

            //レイ
            charaset[37].Picture = プリコネ_バフ_デバフ_.Properties.Resources.rei;
            charaset[37].Sutan = 0;
            charaset[37].SkillName1 = "ウィンドスラスト";
            charaset[37].PhyATK = 0;
            charaset[37].MaATK = 0;
            charaset[37].PhyDEF = -110;
            charaset[37].MaDEF = 0;
            charaset[37].Interval = 10;
            charaset[37].EffectTime = 0;
            charaset[37].Tp = 0;
            charaset[37].Position = 330;

            //サオイ
            charaset[38].Picture = プリコネ_バフ_デバフ_.Properties.Resources.saoi;
            charaset[38].Sutan = 0;
            charaset[38].SkillName1 = "ポイゾナスバレット";
            charaset[38].PhyATK = 0;
            charaset[38].MaATK = 0;
            charaset[38].PhyDEF = 0;
            charaset[38].MaDEF = -91;
            charaset[38].Interval = 10;
            charaset[38].EffectTime = 0;
            charaset[38].Tp = 0;
            charaset[38].Position = 210;

            //サレン
            charaset[39].Picture = プリコネ_バフ_デバフ_.Properties.Resources.sarenn;
            charaset[39].Sutan = 0;
            charaset[39].SkillName1 = "サレン";
            charaset[39].PhyATK = 0;
            charaset[39].MaATK = 0;
            charaset[39].PhyDEF = 0;
            charaset[39].MaDEF = 0;
            charaset[39].Interval = 10;
            charaset[39].EffectTime = 0;
            charaset[39].Tp = 0;
            charaset[39].Position = 220;

            //ユイ
            charaset[40].Picture = プリコネ_バフ_デバフ_.Properties.Resources.yui;
            charaset[40].Sutan = 0;
            charaset[40].SkillName1 = "フラワーショット";
            charaset[40].PhyATK = -1365;
            charaset[40].MaATK = 0;
            charaset[40].PhyDEF = 0;
            charaset[40].MaDEF = 0;
            charaset[40].Interval = 10;
            charaset[40].EffectTime = 0;
            charaset[40].Tp = 0;
            charaset[40].Position = 30;

            //ユカリ
            charaset[41].Picture = プリコネ_バフ_デバフ_.Properties.Resources.yukari;
            charaset[41].Sutan = 0;
            charaset[41].SkillName1 = "アクアヴィット";
            charaset[41].PhyATK = 0;
            charaset[41].MaATK = 0;
            charaset[41].PhyDEF = 0;
            charaset[41].MaDEF = 146;
            charaset[41].Interval = 10;
            charaset[41].EffectTime = 0;
            charaset[41].Tp = 0;
            charaset[41].Position = 260;

            //ユニ
            charaset[42].Picture = プリコネ_バフ_デバフ_.Properties.Resources.yuni;
            charaset[42].Sutan = 0;
            charaset[42].SkillName1 = "豪傑生成論";
            charaset[42].PhyATK = 5460;
            charaset[42].MaATK = 0;
            charaset[42].PhyDEF = 0;
            charaset[42].MaDEF = 0;
            charaset[42].Interval = 10;
            charaset[42].EffectTime = 0;
            charaset[42].Tp = 127;
            charaset[42].Position = 20;

            return charaset[i];
        }
    }

    class Charaselect_form : Form
    {

        Form1.Set chara = new Form1.Set[43];

        PictureBox CharaSamune = new PictureBox[43];

        Panel CharaPanel = new Panel();


        int CharaX = new int[100];
        int[] CharaY = new int[100];
        int i;
        public Charaselect_form()
        {
            CharaX[0] = 5;
            CharaY[0] = 0;

            this.Text = "キャラセレクト";
            this.Size = new Size(750, 700);
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            this.ShowInTaskbar = false;
            this.FormBorderStyle = FormBorderStyle.FixedDialog;

            CharaPanel.AutoScroll = true;

            CharaPanel.Location = new Point(0, 0);
            CharaPanel.Dock = DockStyle.Fill;

            Form1 form1 = new Form1();


            int count = 1;
            for (i = 0; i < 43; i++)
            {
                chara[i] = form1.charaskill(i);

                CharaSamune[i] = new PictureBox()
                {
                    Size = new Size(129, 129),
                    Image = new Bitmap(chara[i].Picture),
                };
                CharaSamune[i].Location = new Point(CharaX[i], CharaY[i]);

                CharaSamune[i].Click += new EventHandler(chara_click);

                CharaPanel.Controls.Add(CharaSamune[i]);

                CharaX[i + 1] = CharaX[i] + 138;
                CharaY[i + 1] = CharaY[i];

                if ((i + 1) == 5 * count)
                {
                    CharaY[i + 1] = CharaY[i] + 140;
                    CharaX[i + 1] = 5;
                    count++;
                }
            }

            this.FormClosing += new FormClosingEventHandler(charaselect_close);

            this.Controls.Add(CharaPanel);
        }

        void chara_click(object sender, EventArgs e)
        {

        }

        void charaselect_close(object sender, FormClosingEventArgs e)
        {
            Form1.charaform = true;
        }
    }
}

プリコネのツール的なものが作りたい

今日は、キャラを選ぶ画面を作りました。そのうち、キャラの絵をスクロールして、表示できるようにしたい。

メインの画面

上の画面の中央にバフがかかっている数値とかを、見れるようにしたい。

リソースファイルに画像埋め込んだ時、画像の名前が日本語だと、エラーが起きましたが、アルファベットのみにしたら、治りました。