2014-04-23 1 views
1

Windows Form에 원형 단추를 만들었습니다. 버튼은 괜찮아. 유일한 문제는 배경과 다른 색상이되도록 내가 backColor를 goldenRod로 설정하기 위해서입니다. 그러나 단순히 원형 버튼 주위에 "goldenRod"큐브를 만듭니다 ... 어떻게하면 버튼 만 색상이되도록 만들 수 있습니까?Windows Form에 원형 단추 추가

public MainForm(){ 

    InitializeComponent();  
    myButtonObject start = new myButtonObject(); 
    EventHandler myHandler = new EventHandler(start_Click); 
    start.Click += myHandler; 
    start.Location = new System.Drawing.Point(5, 5); 
    start.Size = new System.Drawing.Size(101, 101); 
    start.BackColor=System.Drawing.Color.Goldenrod; 
    this.Controls.Add(start); 
`} 

void start_Click(Object sender, System.EventArgs e) 
{ 
    MessageBox.Show("Start"); 
} 

public class myButtonObject : UserControl 
{ 
    // Draw the new button. 
    protected override void OnPaint(PaintEventArgs e) 
    { 
     Graphics graphics = e.Graphics; 
     Pen myPen = new Pen(Color.Black); 
     // Draw the button in the form of a circle 
     graphics.DrawEllipse(myPen, 0, 0, 100, 100); 
     myPen.Dispose(); 
    } 
} 
+0

+1 @LarsTech 또한'BackColor'를 재설정해야합니다. 그렇지 않으면'UserControl' 경계를 해당 색상으로 채 웁니다. 또는'OnPaintBackground' 메소드를 오버라이드하십시오. – Xenolightning

답변

1

당신은 Ellipse 당신이 OnPaint() 방법 중 그리는를 작성해야합니다.

graphics.FillEllipse(Brushes.Goldenrod, new Rectangle(0,0,100,100)); 
graphics.DrawEllipse(myPen, 0, 0, 100, 100); 

는 그런 다음 MainForm() 생성자에서 start.BackColor 속성을 제거해야합니다.

+0

graphics.DrawEllipse (myPen, 0, 0, 100, 100); graphics.FillEllipse (Brushes.Goldenrod, 새 직사각형 (0,0,100,100)); myPen.Dispose(); – user3541263

+0

그게 바로 내가 올린 것입니다. 테스트 폼에서 저에게 맞습니다. –

+0

개요를 지우지 않으려면 그리기 전에 채우기를 수행하십시오. – LarsTech