2011-04-14 4 views
2

winforms 폼의 높이 및 너비 속성을 모두 색으로 지정할 수 있습니까? 나는이 코드를 시도했습니다 winform 폼 매개 변수 얻기 (너비 및 높이)

..

private void Form1_Load(object sender, EventArgs e) 
{ 
    using (Graphics g = this.CreateGraphics()) 
    { 
     Rectangle r=this.DisplayRectangle; 
     g.DrawRectangle(Pens.Black, new Rectangle(0, 0, r.X, r.Y)); 
    } 
} 

하지만 그것은 일을하지 않습니다. 그래픽 객체와 Rectangle 객체로 전체 양식을 검은 색으로 채색하는 방법은 무엇입니까?

+0

이 어떤 의미를하지 않는 것 같이

양식은 단순히 검은 색으로 설정할 수 있습니다 BackColor라는 속성이 있습니다. 다른 사람에게 답을 명확히 해달라고 요청하는 경우 * 답변에 대한 의견으로 답장하십시오. 원래 질문에 대한 실질적인 변화가 필요한 경우 "업데이트"로 게시하십시오. 즉, 기존 질문 텍스트를있는 그대로 그대로두고 아래에 새 질문을 추가하십시오. 이것은 다른 사람들이 문맥에서 질문을 이해하는 데 도움이 될 것입니다. 또한, 아마도 당신이 사용하는 포맷으로 조금 더 열심히 노력할 수도 있습니다. 사람들이 당신의 질문에 대답하기가 훨씬 쉬워 질 것입니다. =) – Rob

+0

죄송합니다, Robs, 제공된 알고리즘으로 알고리즘을 수정 한 후에이 질문을 고려했습니다. 해결 ... 그래서 내가 해결책을 게시하고, 질문으로 대체했습니다 –

답변

3

이렇게하면 화면이 나타나는 화면에 그림이 그려집니다. 윈도우는 그 사실을 인식하지 못하기 때문에 어떤 이유로 든 윈도우가 업데이트되면 색상없이 다시 그려집니다.

Paint 이벤트를 사용하여 창에 그래픽을 그립니다. 이벤트에 대한 이벤트 핸들러를 추가하면 윈도우를 다시 그려야 할 때마다 호출됩니다. 이벤트 인수에는 드로잉에 사용해야하는 Graphics 개체가 들어 있습니다.

사용 폭과 높이가 아닌 XY 속성으로 DisplayRectangleWidthHeight 속성. 그러나 Graphics 개체를 업데이트 할 영역에 잘릴 수 있으므로 Clear 메서드를 사용하여 색으로 채울 수 있습니다.

+0

신난다. –

1

디자인보기에서 내 양식에 두 개의 단추가 있습니다. button1_Click은 검은 색으로 칠하고, button2_Click은 양식을 다시 제어 색으로 칠하는 것입니다.

public partial class Form2 : Form 
{ 
    private Brush brushToPaint; 

    public Form2() 
    { 
     InitializeComponent(); 
     brushToPaint = SystemBrushes.Control; 
    } 

    protected override void OnPaint(PaintEventArgs e) 
    { 
     e.Graphics.FillRectangle(brushToPaint, this.DisplayRectangle); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     brushToPaint = Brushes.Black; 
     InvokePaint(this, new PaintEventArgs(this.CreateGraphics(), this.DisplayRectangle)); 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     brushToPaint = SystemBrushes.Control; 
     InvokePaint(this, new PaintEventArgs(this.CreateGraphics(), this.DisplayRectangle)); 
    } 
} 
+0

고맙습니다. 알고리즘을 알지 못했습니다.이게 SystemBrushes.Control을합니다. –

+0

MSDN에서 [SystemBrushes] (http://msdn.microsoft.com/en-us/library/system.drawing.systembrushes.aspx)를 확인하십시오. 단순히 Windows에서 사용되는 미리 채색 된 브러시입니다. 컨트롤 색상, 하이라이트 색상, 비활성 창 색상 등. –

1

당신은 GraphicsDisplayRectangle를 사용하여이 작업을 수행하는이 있습니까? 나는 당신의 편집을 롤백 한

private void Form1_Load(object sender, EventArgs e) 
{ 
    this.BackColor = Color.Black; 
}