2016-12-22 8 views
0

私はここで新しいです。私は自分のカスタム形状をボタンで作成する方法を見つけようとしています。独自のボタン形状を作成する

クラスを作成する必要がありますか?またはXMLファイルですか?私はそれが表のように見えるボタンを作成する必要があります。私はこのコードが見つかりましたが、それを作成するのは難しいです。

Button dynamicButton = new Button();   
// Define the points in the polygonal path. 
Point[] pts = { 
    new Point(20, 60), 
    new Point(140, 60), 
    new Point(140, 20), 
    new Point(220, 100), 
    new Point(140, 180), 
    new Point(140, 140), 
    new Point(20, 140) 
}; 

// Make the GraphicsPath. 
GraphicsPath polygon_path = new GraphicsPath(FillMode.Winding); 
polygon_path.AddPolygon(pts); 

// Convert the GraphicsPath into a Region. 
Region polygon_region = new Region(polygon_path); 

// Constrain the button to the region. 
dynamicButton.Region = polygon_region; 

// Make the button big enough to hold the whole region. 
dynamicButton.SetBounds(
    dynamicButton.Location.X, 
    dynamicButton.Location.Y, 
    pts[3].X + 5, pts[4].Y + 5); 
Controls.Add(dynamicButton); 
+3

:あなたがWPFで行くことにした場合、あなたはこのような何かを行うことができます適切なタグを追加してください。 –

+0

私はGUIツールキットを知らない。ナイフで完全にボタンを描くことができる外部ソフトウェアですか? VS Blendでボタンを作成してwinformにインポートする方法はありますか? – drs

+1

"GUIツールキットはわかりません。" - ウィンドウにボタンなどのビジュアル要素を追加する場合は、GUIツールキットを使用しています。あなたがそれを使って何かをする前にあなたが使っているものを見つけることはあなたにとって不可欠です*。 "これは外部のソフトウェアですか?" 「GUIツールキット」は、グラフィカルユーザインターフェース(すなわち、GUI)を作成するために使用することができる任意の組のビジュアルコンポーネントの総称である。 VS Blendは、Windowsフォームとは異なるGUIツールキットであるWPFを対象としています。彼らは相互作用することができますが、率直に言えば、まず学ぶべきことがあります。 –

答えて

0

C#WinFormアプリケーション用のボタンを作成しようとしている場合は、Panelコントロールを使用した楕円形のボタンのサンプルがあります。カスタムシェイプを提供する場合は、OnPainイベントで行います。次のコードを使用してみてください。すると、何をすべきかがわかります。

using System; 
using System.Drawing; 
using System.Windows.Forms; 
using System.ComponentModel; 

public class AdonaiOvalButton : Panel 
{ 
    bool isControlActive = false; 

    #region Text 
    private string text = "Button"; 
    [NotifyParentProperty(true)] 
    [EditorBrowsable(EditorBrowsableState.Always)] 
    [Browsable(true)] 
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] 
    [Bindable(true)] 
    [Description("Sets the Text"), Category("Adonai")] 
    public override string Text 
    { 
     get { return text; } 
     set 
     { 
      if (value != text) 
      { 
       if (value == string.Empty) 
       { value = " "; } 
       text = value; 
       this.Invalidate(); 
      } 
     } 
    } 
    #endregion Text 

    #region ForeColor 
    private Color foreColor = Color.White; 
    [Description("Sets the Forecolor"), Category("Adonai")] 
    public override Color ForeColor 
    { 
     get { return foreColor; } 
     set 
     { 
      if (foreColor != value) 
      { 
       foreColor = value; 
       this.Invalidate(); 
      } 
     } 
    } 
    #endregion ForeColor 

    #region Outline Color 
    private Color outLineColor = Color.DarkGray; 
    [Description("Sets the Buttons outline color"), Category("Adonai")] 
    public Color OutLineColor 
    { 
     get { return outLineColor; } 
     set 
     { 
      if (outLineColor != value) 
      { 
       outLineColor = value; 
       this.Invalidate(); 
      } 
     } 
    } 
    #endregion Outline Color 

    #region Outline Width 
    private float outlineWidth = 0.4f; 
    [Description("Sets the Buttons outline width"), Category("Adonai")] 
    public float OutlineWidth 
    { 
     get { return outlineWidth; } 
     set 
     { 
      if (outlineWidth != value) 
      { 
       outlineWidth = value; 
       this.Invalidate(); 
      } 
     } 
    } 
    #endregion Outline Width 

    #region Default Back Color 
    //--Default Button Color--// 
    private Color inactiveColor = ControlPaint.Dark(SystemColors.Grad 
0

@Sinatrによると、WPFが簡単になると私は同意します。この質問への答えは重くので、使用しているGUIツールキット(例えばWindowsフォーム、WPF、のGtk#、...)に依存

<Button> 
    <Button.Template> 
     <ControlTemplate> 
      <Canvas Height="80" Width="100"> 
       <Rectangle Height="80" Width="100" Stroke="Blue" StrokeThickness="2"/> 
       <Line X1="50" Y1="0" X2="50" Y2="80" Stroke="Blue" StrokeThickness="2"/> 
       <Line X1="0" Y1="20" X2="100" Y2="20" Stroke="Blue" StrokeThickness="2"/> 
       <Line X1="0" Y1="40" X2="100" Y2="40" Stroke="Blue" StrokeThickness="1"/> 
       <Line X1="0" Y1="60" X2="100" Y2="60" Stroke="Blue" StrokeThickness="1"/> 
      </Canvas> 
     </ControlTemplate> 
    </Button.Template> 
</Button> 
+0

このxmlファイルから読み込むボタンを設定するにはどうすればよいですか? – drs

+0

プロジェクトを作成するときは、WPFアプリケーションを作成する必要があります。これにより、これを追加できるmainwindow.xmlファイルが作成されます。 WPFとXAMLに関するオンラインチュートリアルはたくさんありますが、http://www.wpf-tutorial.com/xaml/what-is-xaml/で始めることもできます – sclarke81

関連する問題