2011-11-16 5 views
0

UserControl 컨트롤에서 브러시로 그리려하고 있습니다. 선, 원 및 직사각형을 그릴 수 있습니다. 왜 브러시로 그릴 수 없는지 정확히 이해하지 못합니다. 아래 코드는 MouseDown을 가리킨 다음 MouseUp에 설정된 위치로 이동합니다. MouseMove에서 그려지는 내용은 없습니다. 여기에 몇 가지 기본 규칙을 이해하지 못한다고 생각합니다.브러시를 사용하여 UserControl에서 그리기

이 코드는 선 작동 :

public override void Draw(Graphics graphics) { 
    graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; 
    graphics.DrawLine(new Pen(this.Color, this.PenSize), startPoint, endPoint); 
} 

내가 브러시에 대한 적응 trygin하고이 코드를 다음으로

private void UserControl_Paint(object sender, PaintEventArgs e) { 
    if (ObjectsList != null) { 
    ObjectsList.Draw(e.Graphics); 
    } 
} 

:

public override void Draw(Graphics graphics) { 
    if (this.bitmap != null) { 
    graphics = Graphics.FromImage(this.bitmap); 
    graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; 
    graphics.DrawEllipse(new Pen(this.Color, this.PenSize), startPoint.X, startPoint.Y, 
         this.PenSize, this.PenSize); 
    graphics.DrawImage(this.bitmap, 0, 0); 
    } 
} 

이 코드는 객체 목록을 다시 그립니다 코드는 포인트 그리기 선 그리기 전과 후에 비트 맵 이미지를 잡으려고합니다. 다른 방법으로해야할까요?

답변

2

나는 정말로 당신의 질문을 이해하지 못한다. 그러나 두 번째 코드에서 그들은 실수로 보인다. 아마도 이것을 시도해야 할 것입니다 :

public override void Draw(Graphics graphics) 
{ 
    if (this.bitmap != null) 
    { 
     Graphics g = Graphics.FromImage(this.bitmap); 
     g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; 
     g.DrawEllipse(new Pen(this.Color, this.PenSize), startPoint.X, startPoint.Y, this.PenSize, this.PenSize); 
     graphics.DrawImage(this.bitmap, 0, 0); 
    } 
} 

그렇지 않으면 비트 맵 자체에 비트 맵을 그립니다. 희망이 도움이됩니다.

+0

나는 아주 간단한 실수가 거의 확실했습니다. 귀하의 의견을 보내 주셔서 감사합니다. 내 비 직관적 인 코드 붙여 넣기 미안 해요. – qlf00n

관련 문제