「ラブライブ!」TVアニメ1期 アニメーションPV集 前編【スクスタリリース記念!】
アニメ『ラブライブ!』
ケロロ軍曹→ケロロのように、一作目が必ずしも短いタイトルではないと思ってたので、あまり疑ってなかったのですが、サンシャインに、μ’s(ミューズ)というグループ名が出てきたので、もしや! と思い、サンシャインではなく、ラブライブ!が一作目なんだとようやく分かりました。。
ラブライブ!より先に、サンシャイン!を見てしまった。まあ、途中で気づいたので、取り戻せます。
本ブログで作っている「まる訓練ツール」(今命名しました)は、模範画像が一枚だけですので、複数枚表示できるように修正します。
マウスアップ毎に以下の3枚の画像を入れ替えていくツールにしてみます。
まずは、C#でディレクトリ内のファイルを取得する方法から。
takk@deb8:~/Desktop$ cat -n test.cs 1 using System; 2 3 class Test { 4 [STAThread] public static void Main() { 5 string[] files = System.IO.Directory.GetFiles( 6 @"./", "*", System.IO.SearchOption.AllDirectories); 7 foreach(string m in files) { 8 Console.WriteLine("[{0}]",m); 9 } 10 } 11 }
Windowsで動かす場合は、csc.exeがあるディレクトリを探して、パスを通して、ビルドして、実行。
C:\Users\takk>dir C:\Windows /b/s | findstr csc.exe$ C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe C:\Users\takk>set PATH=%PATH%;C:\Windows\Microsoft.NET\Framework\v4.0.30319\ C:\Users\takk>csc test.cs Microsoft (R) Visual C# Compiler Version 4.0.30319.36366 for Microsoft (R) .NET Framework 4.5 Copyright (C) Microsoft Corporation. All rights reserved. C:\Users\takk>test
Linuxの場合は、monoをインストールしてから、mono プログラム名.exeで実行できます。
takk@deb8:~/Desktop$ sudo apt-get install mono-devel mono-mcs takk@deb8:~/Desktop$ mcs test.cs takk@deb8:~/Desktop$ ls test.cs test.exe takk@deb8:~/Desktop$ takk@deb8:~/Desktop$ touch a b c takk@deb8:~/Desktop$ mono test.exe [./a] [./b] [./c] [./test.cs] [./test.exe] takk@deb8:~/Desktop$
ディレクトリのファイルを取得するプログラムを、まる訓練ツールに組み込みます。
まず、必要な変数。画像数は可変なので、配列にしておきます。また、現在どの画像を表示しているかのインデックスとしてfile_noという変数も用意しました。
7 Image[] img; 8 string[] files; 9 int file_no = 0;
画像ファイルの読み込みと、img変数へのセットです。
19 files = System.IO.Directory.GetFiles( 20 @"img", "*.png", System.IO.SearchOption.AllDirectories); 21 img = new Image[files.Length]; 22 foreach(string m in files) { 23 img[file_no++]=Image.FromFile(m); 24 } 25 file_no=0;
タイマ満了した時に、画像を切り替えしますので、画像番号の上限チェックしつつインクリメントします。
68 void OnTimer(object sender, EventArgs e){ 69 t.Enabled = false; 70 if(++file_no >= files.Length){ 71 file_no = 0; 72 } 73 pb1.Image = img[file_no]; 74 pb1.Invalidate(); 75 Graphics g = Graphics.FromImage(bmp); 76 g.Clear(Color.Transparent); 77 pb2.Invalidate(); 78 g.Dispose(); 79 }
全プログラムです。
1 using System; 2 using System.Drawing; 3 using System.Windows.Forms; 4 5 class Test : Form 6 { 7 Image[] img; 8 string[] files; 9 int file_no = 0; 10 PictureBox pb1 = new PictureBox(); 11 PictureBox pb2 = new PictureBox(); 12 Bitmap bmp = new Bitmap(640,480); 13 bool pen = false; 14 Timer t; 15 16 Test() 17 { 18 19 files = System.IO.Directory.GetFiles( 20 @"img", "*.png", System.IO.SearchOption.AllDirectories); 21 img = new Image[files.Length]; 22 foreach(string m in files) { 23 img[file_no++]=Image.FromFile(m); 24 } 25 file_no=0; 26 27 this.Text = "目を描く練習"; 28 this.Size = new Size(img[0].Width+40,img[0].Height+40); 29 30 pb1.Dock = DockStyle.Fill; 31 pb1.Image = img[file_no]; 32 pb1.BackColor = Color.Transparent; 33 34 pb2.Dock = DockStyle.Fill; 35 pb2.BackColor = Color.Transparent; 36 pb2.Image = bmp; 37 38 pb2.MouseDown += new MouseEventHandler(MouseDown); 39 pb2.MouseMove += new MouseEventHandler(MouseMove); 40 pb2.MouseUp += new MouseEventHandler(MouseUp); 41 42 Controls.Add(pb1); 43 pb1.Controls.Add(pb2); 44 45 t = new Timer(); 46 t.Interval = 500; 47 t.Tick += new EventHandler(OnTimer); 48 } 49 void DrawPen(int x, int y){ 50 Graphics g = Graphics.FromImage(bmp); 51 Rectangle r = new Rectangle(x-2, y-2, 5, 5); 52 g.FillEllipse(Brushes.Black, r); 53 pb2.Invalidate(); 54 g.Dispose(); 55 } 56 new void MouseDown(object sender, MouseEventArgs e){ 57 pen = true; 58 } 59 new void MouseMove(object sender, MouseEventArgs e){ 60 if(pen == true){ 61 DrawPen(e.X, e.Y); 62 } 63 } 64 new void MouseUp(object sender, MouseEventArgs e){ 65 pen = false; 66 t.Enabled = true; 67 } 68 void OnTimer(object sender, EventArgs e){ 69 t.Enabled = false; 70 if(++file_no >= files.Length){ 71 file_no = 0; 72 } 73 pb1.Image = img[file_no]; 74 pb1.Invalidate(); 75 Graphics g = Graphics.FromImage(bmp); 76 g.Clear(Color.Transparent); 77 pb2.Invalidate(); 78 g.Dispose(); 79 } 80 [STAThread] 81 public static void Main() 82 { 83 Application.Run(new Test()); 84 } 85 }
maru 4
コメント
[…] 「ペンタブ初心者用のまる練習用ツールを作る(その4)」の続きです。 「ペンタブ初心者用のまる練習用ツールを作る(その4)」までは、Windows.Formsを使ってましたが、せっかくDXライブラリを使い始めたので、DXライブラリを使用するプログラムに変えてみます。 […]