2014-01-14 37 views
5

私はボタンにイメージを置くでしょう、そしてそのイメージは角を丸めました。これをどうやって起こさせるのですか?私はグーグルで何時間も探していて、それでも運がない。Winform C#で角を丸めたボタンを作成するにはどうすればよいですか?

+8

winformsは見た目の良いものをサポートしていません。あなたはWPFを探しています。 –

+0

http://stackoverflow.com/questions/5718619/c-sharp-how-to-add-round-corner-to-button – cvraman

答えて

1

Windowsフォームに固執する場合は、ピクチャボックスを使用し、ホバーなどでアニメーションを作成する必要があります。クリックすると、ボタンのように機能します。

または、これらの記事をチェックアウト:あなたがよりよいレイアウトをしたい場合、あなたはまた、WPFを使用することができますが、それはWindowsフォームとは多少異なるのですが

http://www.codeproject.com/Articles/15730/RoundButton-Windows-Control-Ever-Decreasing-Circle http://www.codeproject.com/Articles/10303/Elliptical-Circular-Button

を。

2

Microsoft Visual Basic PowerPacksの四角形を使用できます。

私はそれは、x86とx64の両方を対象としたWindows7のx64の上のWindowsデスクトップ用VS2013 ExpressのC#Windowsフォームプロジェクト、で動作確認How to: Draw Shapes with the OvalShape and RectangleShape Controls

のドキュメントがあります。

private void rectangleShape1_Click(object sender, EventArgs e) 
{ 
    MessageBox.Show("Click!"); 
} 

When the program is run

便宜上、新しいツールボックス]タブを追加することができますし、それにVB PPコントロールを追加します。

0

私はどこでもこの質問の解決策を探していましたが、来るのは難しいようでした。しかし、私は、ボタンコントロール上で丸められた角を、ペイントイベント中に呼び出される関数を使用して得ました。

1.新しいプロジェクト
3.どこでも、フォーム上にフォーム
4.ダブルクリックに2×ボタンを追加すると、新しいウィンドウが形成選択し、視覚的なスタジオを持って、新しいプロジェクト
2を作成する必要がありますForm1のサブヘッダを含む、すべてのコードを削除し、以下の 「buttonBorderRadius(送信者、50)」関数を呼び出す

Imports System.Drawing.Drawing2D 


Public Class Form1 

    Public Sub buttonBorderRadius(ByRef buttonObj As Object, ByVal borderRadiusINT As Integer) 
     Dim p As New Drawing2D.GraphicsPath() 
     p.StartFigure() 
     'TOP LEFT CORNER 
     p.AddArc(New Rectangle(0, 0, borderRadiusINT, borderRadiusINT), 180, 90) 
     p.AddLine(40, 0, buttonObj.Width - borderRadiusINT, 0) 
     'TOP RIGHT CORNER 
     p.AddArc(New Rectangle(buttonObj.Width - borderRadiusINT, 0, borderRadiusINT, borderRadiusINT), -90, 90) 
     p.AddLine(buttonObj.Width, 40, buttonObj.Width, buttonObj.Height - borderRadiusINT) 
     'BOTTOM RIGHT CORNER 
     p.AddArc(New Rectangle(buttonObj.Width - borderRadiusINT, buttonObj.Height - borderRadiusINT, borderRadiusINT, borderRadiusINT), 0, 90) 
     p.AddLine(buttonObj.Width - borderRadiusINT, buttonObj.Height, borderRadiusINT, buttonObj.Height) 
     'BOTTOM LEFT CORNER 
     p.AddArc(New Rectangle(0, buttonObj.Height - borderRadiusINT, borderRadiusINT, borderRadiusINT), 90, 90) 
     p.CloseFigure() 
     buttonObj.Region = New Region(p) 
    End Sub 



    Private Sub Button1_Paint(sender As Object, e As PaintEventArgs) Handles Button1.Paint 
     buttonBorderRadius(sender, 25) 
    End Sub 

    Private Sub Button2_Paint(sender As Object, e As PaintEventArgs) Handles Button2.Paint 
     buttonBorderRadius(sender, 50) 
    End Sub 


End Class 

に貼り付ける
5.コードウィンドウを開きます個々のボタンに異なるborderRadiusを設定できることを意味します。 (ただし、すべてではない) と、オブジェクトを使用するため、あなたはpictureboxesに同じ機能を適用することができ、そして他のコントロール

だから「buttonBorderRadius(送信者、10)」 とAと10画素境界の半径を設定することができこのような50ピクセルの半径buttonBorderRadius(送信者、50) " 関数の第2引数として の整数を変更し、第1引数はオブジェクト変数でなければなりません

関連する問題