(Translated by https://www.hiragana.jp/)
 VB.NETとVC#.NETでの実装

VB.NETとVC#.NETでの実装じっそう

1.方針ほうしん

このページでは、具体ぐたいてきにVisual Basic.NET, Visual C#.NET を利用りようして、プログラムを作成さくせいし、実行じっこうして、計算尺けいさんじゃくのイメージを作成さくせいします。

2.Visual Basic .NETとVisual C# .NET

これらは、Microsoft Visual Studio .NETファミリーにはいっています。Enterprise Architectなんていうおそろしいものを使つかわなくでも、個別こべつ言語げんごのStandard Editionで十分じゅうぶんです。わたしはAcademicで作成さくせいしました。

バージョンは2002で作成さくせいしましたが、2003, 2005でもおな方法ほうほう作成さくせいできます。それ以前いぜんのバージョン、たとえば、Visual Basic 6.0などでは、言語げんごがまったくちがうといっても過言かごんではないので、ご利用りよういただけません。

Visual Basic .NETとVisual C#.NETは、それぞれがBASIC, Cをもとにしているというちがいがあるだけで、ほとんどちがいがありません。以下いかしめすコードをごらんいただければ、ほぼ一対一いちたいいち対応たいおうられるでしょう。りょう言語げんごは、ほぼ同等どうとう機能きのうゆうしています。

3.Pascal形式けいしきとcamel形式けいしき

1文字もじ大文字おおもじ、2文字もじ以降いこう小文字こもじのち区切くぎりごとにあたま大文字おおもじとすることをPascal形式けいしきといいます。たとえば、PascalCaseはパスカル形式けいしきです。

1文字もじ小文字こもじ、2文字もじ以降いこう小文字こもじのち区切くぎりごとにあたま大文字おおもじとすることをcamel形式けいしきといいます。たとえば、camelCaseはカメル形式けいしきです。

Visual Basic .NETでは、TextBox1などコントロールめいをPascal形式けいしきにします。

Visual C# .NETでは、textBox1などコントロールめいをcamel形式けいしきにします。

以下いか文章ぶんしょうではPascal形式けいしききますが、Visual C# .NETをご利用りようになるときにはcamel形式けいしきえておみください。

4.コントロールの配置はいち

Visual Studio.NETで、「ファイル」→「新規しんき作成さくせい」→「プロジェクト」で「あたらしいプロジェクト」ウインドウを表示ひょうじさせます。「プロジェクトの種類しゅるい」ではご希望きぼう言語げんご選択せんたくし、「テンプレート」では、「Windowsアプリケーション」を選択せんたくします。「場所ばしょ」は適宜てきぎ変更へんこうし、プロジェクトめいなにでもかまいませんがたとえば「SlideRuleMaker」などとしておきます。

FormにLabel1, Label2, TextBox1, TextBox2, Button1を配置はいちします。(ひだり:Visual Basic .NET, みぎ:Visual C# .NET)

それぞれのプロパティをプロパティウインドウでつぎのように変更へんこうします。

プロパティめい
Label1.Font.Size 12
Label1.Text 読取よみと.csvファイルめい
Label2.Font.Size 12
Label2.Text 保存ほぞん.gifファイルめい
TextBox1.Font.Size 12
TextBox1.Text (TextBox1.Text = "")
TextBox2.Font.Size 12
TextBox2.Text (TextBox2.Text = "")
Button1.Font.Size 12
Button1.Text 作成さくせい

5.コード

Button1をダブルクリックすると、つぎのようなコードが自動的じどうてき作成さくせいされ、Button1のクリックイベントが作成さくせいできます。

Visual Basic .NET

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

End Sub
            
Visual C# .NET

private void button1_Click(object sender, System.EventArgs e)
{

}
            

このあいだにコードを追加ついかしていきます。

Visual Basic .NET

If System.IO.File.Exists(TextBox1.Text) Then
    Dim sr As System.IO.StreamReader
    sr = New System.IO.StreamReader(TextBox1.Text)

    Try
        Dim s As String = sr.ReadLine()
        Dim line As String()
        Dim length As Integer
        Dim place As Integer
        Dim myImage As Image
        myImage = New Bitmap(1000, 100)
        Dim myGraphics As Graphics = Graphics.FromImage(myImage)
        myGraphics.FillRectangle(Brushes.White, 0, 0, 1000, 100)
        Dim p As New Pen(Color.Black)

        Do While s <> ""
            line = s.Split(",")
            length = line(2)
            place = CDbl(line(1)) * 900 + 50
            Select Case length
                Case 1
                    myGraphics.DrawLine(p, place, 45, place, 55)
                Case 2
                    myGraphics.DrawLine(p, place, 40, place, 60)
                Case 3
                    myGraphics.DrawLine(p, place, 35, place, 65)
                Case Else
                    Throw New Exception("ながさとして不適切ふてきせつ設定せっていされました。" & vbNewLine & s)
            End Select
            s = sr.ReadLine()
        Loop

        myImage.Save(TextBox2.Text, System.Drawing.Imaging.ImageFormat.Gif)
        MessageBox.Show("終了しゅうりょうしました。")
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    Finally
        sr.Close()
    End Try
Else
    MessageBox.Show(TextBox1.Text & "がありません。")
End If
Visual C# .NET

if (System.IO.File.Exists(textBox1.Text))
{
        System.IO.StreamReader sr;
        sr = new System.IO.StreamReader(textBox1.Text);

        try
        {
                String s = sr.ReadLine();
                String[] line;
                int length;
                int place;
                Image myImage;
                myImage = new Bitmap(1000,100);
                Graphics myGraphics = Graphics.FromImage(myImage);
                myGraphics.FillRectangle(Brushes.White,0,0,1000,100);
                Pen p  = new Pen(Color.Black);
                                        
                while(s != null)
                {
                        line = s.Split(',');
                        length = int.Parse(line[2]);
                        place = (int)(float.Parse(line[1]) * 900 + 50);
                        switch (length)
                        {
                                case 1:
                                {
                                        myGraphics.DrawLine(p,place,45,place,55);
                                        break;
                                }
                                case 2:
                                {
                                        myGraphics.DrawLine(p,place,40,place,60);
                                        break;
                                }
                                case 3:
                                {
                                        myGraphics.DrawLine(p,place,35,place,65);
                                        break;
                                }
                                default:
                                {
                                        throw new Exception("ながさとして不適切ふてきせつ設定せっていされました。\n" + s);
                                }
                        }
                        s = sr.ReadLine();
                }

                myImage.Save(textBox2.Text,System.Drawing.Imaging.ImageFormat.Gif);
                MessageBox.Show("終了しゅうりょうしました。");
        }
        catch (Exception ex)
        {
                MessageBox.Show(ex.Message);
        }
        finally
        {
                sr.Close();
        }
}
else
{
        MessageBox.Show(textBox1.Text + "がありません。");
}

最終さいしゅうてき完了かんりょうしたファイルを公開こうかいしておきます。

これらのファイルをVisual Studio.NET / Visual Basic.NET / Visual C#.NET 2003でひらくと、バージョンを変換へんかんしなければひらくことができないとのむねのダイアログが表示ひょうじされますが、「はい」を選択せんたくすれば、バージョン2002とおなじように利用りようすることができます。

6.解説かいせつ

6.1.ファイルの

TextBox1に入力にゅうりょくされたファイルが存在そんざいすれば、処理しょり存在そんざいしなければ、「"ファイルめい"は存在そんざいしません」と表示ひょうじします。

sr.ReadLine()で、1ぎょうずつります。s.Split(",")を使つかって「,」で数字すうじ区切くぎって、配列はいれつlineに代入だいにゅうします。

Visual Basic .NET

If System.IO.File.Exists(TextBox1.Text) Then
    Dim sr As System.IO.StreamReader
    sr = New System.IO.StreamReader(TextBox1.Text)
    Dim s As String = sr.ReadLine()
    Dim line As String()
        
    line = s.Split(",")

    sr.Close()
Else
    MessageBox.Show(TextBox1.Text & "がありません。")
End If
Visual C# .NET

if (System.IO.File.Exists(textBox1.Text))
{
        System.IO.StreamReader sr;
        sr = new System.IO.StreamReader(textBox1.Text);
        String s = sr.ReadLine();
        String[] line;

        line = s.Split(',');

        sr.Close();
}
else
{
        MessageBox.Show(textBox1.Text + "がありません。");
}

6.2.イメージの作成さくせい

イメージを1000×100のサイズで作成さくせいし、白色はくしょくりつぶします。のち利用りようする黒色こくしょくのペンを宣言せんげんしておきます。

Visual Basic .NET

        Dim myImage As Image
        myImage = New Bitmap(1000, 100)
        Dim myGraphics As Graphics = Graphics.FromImage(myImage)
        myGraphics.FillRectangle(Brushes.White, 0, 0, 1000, 100)
        Dim p As New Pen(Color.Black)
Visual C# .NET

                Image myImage;
                myImage = new Bitmap(1000,100);
                Graphics myGraphics = Graphics.FromImage(myImage);
                myGraphics.FillRectangle(Brushes.White,0,0,1000,100);
                Pen p  = new Pen(Color.Black);

6.3.メモリの絵画かいが

いちぎょうずつんだsがNullでなければ、以下いか処理しょりかえします。

いちぎょうぶんをコンマで分割ぶんかつして、配列はいれつ代入だいにゅうします。場所ばしょ配列はいれつの1, ながさは配列はいれつの2に格納かくのうされています。

Select Case構文こうぶん(VC#.NETではswitch構文こうぶん)でながさによって分類ぶんるいし、それぞれにおいて指定していされたながさでメモリをきざんでいきます。そのさいながさが1, 2, 3以外いがいであった場合ばあいは、例外れいがいげます。

Visual Basic .NET

        Do While s <> ""
            line = s.Split(",")
            length = line(2)
            place = CDbl(line(1)) * 900 + 50
            Select Case length
                Case 1
                    myGraphics.DrawLine(p, place, 45, place, 55)
                Case 2
                    myGraphics.DrawLine(p, place, 40, place, 60)
                Case 3
                    myGraphics.DrawLine(p, place, 35, place, 65)
                Case Else
                    Throw New Exception("ながさとして不適切ふてきせつ設定せっていされました。" &  vbNewLine & s)
            End Select
            s = sr.ReadLine()
        Loop
Visual C# .NET

                while(s != null)
                {
                        line = s.Split(',');
                        length = int.Parse(line[2]);
                        place = (int)(float.Parse(line[1]) * 900 + 50);
                        switch (length)
                        {
                                case 1:
                                {
                                        myGraphics.DrawLine(p,place,45,place,55);
                                        break;
                                }
                                case 2:
                                {
                                        myGraphics.DrawLine(p,place,40,place,60);
                                        break;
                                }
                                case 3:
                                {
                                        myGraphics.DrawLine(p,place,35,place,65);
                                        break;
                                }
                                default:
                                {
                                        throw new Exception("ながさとして不適切ふてきせつ設定せっていされました。\n" + s);
                                }
                        }
                        s = sr.ReadLine();
                }

6.4.保存ほぞん終了しゅうりょう表示ひょうじ

Image.Saveメソッドを利用りようして、保存ほぞんします。また、終了しゅうりょうらせます。

Visual Basic .NET

        myImage.Save(TextBox2.Text, System.Drawing.Imaging.ImageFormat.Gif)
        MessageBox.Show("終了しゅうりょうしました。")
Visual C# .NET

                myImage.Save(textBox2.Text,System.Drawing.Imaging.ImageFormat.Gif);
                MessageBox.Show("終了しゅうりょうしました。");

6.5.エラー処理しょり

今回こんかい自分じぶん利用りようするだけなので、詳細しょうさいなエラー処理しょりをする必要ひつようはないでしょう。そこで全体ぜんたいをTry Catch構文こうぶんかこっておき、エラーを表示ひょうじさせます。

Visual Basic .NET

    Try

    Catch ex As Exception
        MessageBox.Show(ex.Message)
    Finally

    End Try
Visual C# .NET

        try
        {

        }
        catch (Exception ex)
        {
                MessageBox.Show(ex.Message);
        }
        finally
        {

        }

7.実行じっこう

では、実行じっこうしてみましょう。まえのページで作成さくせいした.csvファイルめいと、保存ほぞんする.gifファイルめい指定していして、「作成さくせい」をクリックすると、.gifファイルが作成さくせいされます。よこながさを半分はんぶんにしたものをせておきます。

こうは、このイメージをすこ加工かこうします。

8.しゃく名前なまえ数字すうじ追加ついか

このイメージに、「C」と「D」というしゃく名前なまえと、「1」~「10」の数字すうじ追加ついかします。

「スタート」→「すべてのプログラム」→「アクセサリ」→「ペイント」でペイントを起動きどうします。「ファイル」メニュー→「ひらく」から、さきほど作成さくせいした.gifファイルをひらきます。

「ツールボックス」の「テキスト」を利用りようして、「C」と「D」というしゃく名前なまえと、「1」~「10」の数字すうじ追加ついかしてください。完了かんりょうしたものはつぎのようなかんじです。ただし、よこはば半分はんぶんにしてあります。

また、CしゃくとDしゃく境目さかいめ直線ちょくせん追加ついかしてください。

9.印刷いんさつ工作こうさく

こうは、おなじみの方法ほうほうです。これを印刷いんさつして、りしてください。くわしい方法ほうほう計算尺けいさんじゃくのイメージからの作成さくせいをごらんください。