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

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

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

Re[2]: ボタンの形状変更した際の線描画


(過去ログ 97 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■58057 / inTopicNo.1)  ボタンの形状変更した際の線描画
  
□投稿者/ YSK (1回)-(2011/03/24(Thu) 15:52:46)

分類:[VB.NET/VB2005 以降] 

いつもこの掲示板を参考にさせていただいております。

今回初めて質問させていただきます。

XP:VB.NET2008 で開発しています。
 
現在、コマンドボタンの形状を変えようとして四苦八苦しています。

必要なのは○、扇形、四角形の一辺だけ曲線になっているような形(何形と言うのかわかりません)

以上3つを作ろうとしています。

いつもこの掲示板を参考にさせていただいております。

今回初めて質問させていただきます。


XP:VB.NET2008 で開発しています。
 
現在、コマンドボタンの形状を変えようとして四苦八苦しています。

必要なのは○、扇形、四角形の一辺だけ曲線になっているような形(何形と言うのかわかりません)

以上3つを作ろうとしています。

この掲示板の過去ログ
No55154:ボタンコントロールの形状変更

を参考にし、まずは○、扇形を作成しました。

ただ、このままではボタンの外周に線が引かれないため、
DrawLineやDrawEllipseで線を引けばいいやと思いやってみたのですがうまくいきません。

現状のソース抜粋

Private Sub Test_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        With btnTest 'テスト用ボタンコントロール

            .BackColor = Color.White

            'ボタンを○に
            Dim myPath As New System.Drawing.Drawing2D.GraphicsPath
            myPath.AddEllipse(New Rectangle(9, 9, 40, 40))
            .Region = New Region(myPath)

            '境界に線を引きたい(失敗)
            Dim g As Graphics = .CreateGraphics()
            g.DrawEllipse(New Rectangle(Pens.Black,10, 10, 39, 39))
            g.DrawLine(Pens.Black, 0, 0, 100, 100) '直線は引ける?

            g.Dispose()

        End With
    End Sub

GraphicsPathで設定すべきなんでしょうか?
面倒なのでフォーム上に線を引いてしまおうかとも思ったのですが…う〜ん

よろしくお願いします。

引用返信 編集キー/
■58075 / inTopicNo.2)  Re[1]: ボタンの形状変更した際の線描画
□投稿者/ shu (550回)-(2011/03/24(Thu) 21:31:25)
No58057 (YSK さん) に返信

buttonのPaintイベントを使用してこんな感じ

   Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        With Button1 'テスト用ボタンコントロール

            .BackColor = Color.White
            .FlatStyle = FlatStyle.Flat

            'ボタンを○に
            Dim myPath As New System.Drawing.Drawing2D.GraphicsPath
            myPath.AddEllipse(New Rectangle(9, 9, 40, 40))
            .Region = New Region(myPath)

        End With

    End Sub

    Private Sub Button1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Button1.Paint
        Dim g = e.Graphics
        g.DrawEllipse(Pens.Black, New Rectangle(10, 10, 38, 38))
    End Sub

引用返信 編集キー/
■58084 / inTopicNo.3)  Re[2]: ボタンの形状変更した際の線描画
□投稿者/ YSK (2回)-(2011/03/25(Fri) 07:15:33)
No58075 (shu さん) に返信

なるほど、記述するイベントがまちがっていたのですね。

これでうまくいきました。

shu様、ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -