C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 92 を表示中)
■55173 / )  Re[3]: ボタンコントロールの形状変更
□投稿者/ よねKEN (632回)-(2010/11/18(Thu) 21:46:46)
2010/11/18(Thu) 21:54:11 編集(投稿者)
サンプルを書いてみました。
新規プロジェクトを立ち上げて、Form1.vbの中身を以下のコードにすれば動かせます。
GraphicsPathクラスにはAdd~という図形を追加するメソッドがありますので、
自分の希望する図形をどうやったら(どのメソッドを組み合わせたら)描けるかを
考えるところからはじめます。後は実際に紙に鉛筆で図を描く手順通りに
メソッドの呼び出しを組み合わせるだけです。

…と簡単に書きましたが、Add~なメソッドでどんな風に
図形が描かれるのかを想像しながらの作業なので簡単には行きません。
試行錯誤が必要になるでしょう。
また、コンピュータの座標系と数学の座標系が異なる(Y軸の向きが逆)とか、
角度を指定するメソッドの場合に0度の位置や+N度と-N度がどっち向きだっけ?と私もよくわからなくなります。
そんなときは単純なコードをいくつか書いてみて検証して目で確認します。

--↓サンプル--

Imports System.Windows.Forms
Imports System.Drawing

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '' 実験の準備  
        '' Button1~Button4のボタンをフォームに配置
        '' (通常はボタンはデザイナで配置しますが、ここで提示するコードだけで検証可能なようにボタンの生成・配置もコードで行います)
        '' ここではボタンの変化がわかりやすいように配置するボタンの形は正方形、ボーダー無し、背景色に分かりやすい色を設定しています)
        Dim Button1 As Button = New Button()
        Dim Button2 As Button = New Button()
        Dim Button3 As Button = New Button()
        Dim Button4 As Button = New Button()

        With Button1
            .BackColor = Color.Red
            .FlatAppearance.BorderSize = 0
            .FlatStyle = FlatStyle.Flat
            .Location = New Point(24, 12)
            .Name = "Button1"
            .Size = New Size(75, 75)
            .Text = "Button1"
        End With

        With Button2
            .BackColor = Color.Blue
            .FlatAppearance.BorderSize = 0
            .FlatStyle = FlatStyle.Flat
            .Location = New Point(105, 12)
            .Name = "Button2"
            .Size = New Size(75, 75)
            .Text = "Button2"
        End With

        With Button3
            .BackColor = Color.Lime
            .FlatAppearance.BorderSize = 0
            .FlatStyle = FlatStyle.Flat
            .Location = New Point(24, 93)
            .Name = "Button3"
            .Size = New Size(75, 75)
            .Text = "Button3"
        End With

        With Button4
            .BackColor = Color.Orange
            .FlatAppearance.BorderSize = 0
            .FlatStyle = FlatStyle.Flat
            .Location = New Point(105, 93)
            .Name = "Button4"
            .Size = New Size(75, 75)
            .Text = "Button4"
        End With

        Me.Controls.Add(Button1)
        Me.Controls.Add(Button2)
        Me.Controls.Add(Button3)
        Me.Controls.Add(Button4)

        '' ここからが本題のRegionに設定するGraphicsPathを作成し、各ボタンの形状を設定しています
        ' 円形
        With Button1
            Dim myPath As New Drawing2D.GraphicsPath
            myPath.AddEllipse(New Rectangle(0, 0, .Width, .Height))
            .Region = New Region(myPath)
        End With
        ' 台形
        With Button2
            Dim myPath As New Drawing2D.GraphicsPath
            myPath.AddPolygon(New Point() {New Point(0, .Height), New Point(.Width * 1 / 5, 0), New Point(.Width * 4 / 5, 0), New Point(.Width, .Height)})
            .Region = New Region(myPath)
        End With
        ' 扇形
        With Button3
            Dim myPath As New Drawing2D.GraphicsPath
            myPath.AddPie(New Rectangle(-.Width, 0, .Width * 2, .Height * 2), 0, -90)
            .Region = New Region(myPath)
        End With

        ' )形
        With Button4
            Dim myPath As New Drawing2D.GraphicsPath
            myPath.AddArc(New Rectangle(-10, 0, .Width, .Height), 90, -180)
            myPath.AddArc(New Rectangle(0, 0, .Width, .Height), 270, 180)
            .Region = New Region(myPath)
        End With
    End Sub
End Class

返信 編集キー/


管理者用

- Child Tree -