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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.55173 の関連記事表示

<< 0 >>
■55173  Re[3]: ボタンコントロールの形状変更
□投稿者/ よねKEN -(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
記事No.55154 のレス /過去ログ92より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -