2016-12-22 6 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

Ответ на этот вопрос во многом зависит от графического интерфейса инструментария (например, Windows Forms, WPF, Gtk #, ...) вы используете, так добавьте соответствующий тег. –

+0

Я не знаю инструментарий GUI. Является ли это внешним программным обеспечением, которое может использовать нож и нарисовать полностью кнопку? Есть ли способ создать его в VS Blend и импортировать его в winform? – drs

+1

«Я не знаю инструментарий GUI». - если вы добавляете визуальные элементы, такие как кнопки в окне, вы используете инструментарий GUI. Для вас важно выяснить, какой из них вы используете, прежде чем что-либо делать с ним. «Это внешнее программное обеспечение» - нет. «Инструментарий GUI» является общим термином для любого набора визуальных компонентов, которые могут использоваться для создания графического пользовательского интерфейса (то есть GUI). «создайте ему кнопку в VS Blend и импортируйте ее в winform» - VS Blend нацеливает WPF, который представляет собой другой набор инструментов GUI из Windows Forms. Они могут взаимодействовать, но, откровенно говоря, есть другие вещи, которые вы должны изучить в первую очередь. –

ответ

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 будет проще. Если вы решите пойти с WPF вы могли бы сделать что-то вроде этого:

<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