2011-11-02 4 views
2

마우스 왼쪽 버튼을 클릭하고 드래그 할 때 대시 프레임을 그리려는 winform이 있습니다. 마우스 왼쪽 버튼을 놓으면 프레임이 사라집니다. ControlPaint.DrawReversibleFrame 메서드를 사용하여이 작업을 수행 할 수 있습니다. 그러나 winform 내부가 아닌 매번 winform 외부로 그립니다. WinForm이 아닌 페인트 영역으로 화면을 사용하는 것은 컨트롤 페인트 방법처럼 보입니다. 나 맞아?컨트롤 페인트가 메서드를 클라이언트 페인트 영역 외부에 그리는 이유는 무엇입니까?

필자의 가정이 맞다면, 어떻게하면 페인트 페인트 영역으로 winform을 사용하도록 controlpaint에 말할 수 있습니까?

감사합니다,

답변

1

ControlPaint 바탕 화면에 그려 "속임수"않습니다.

시도해 볼만한 문제는 직접 치수를 보는 것입니다. 일단 통제 국경에 이르면 전화를 그만하십시오.

업데이트 : 당신은 반드시 올바르게 크기 변환되지 않습니다처럼

그것은 소리.

여기에 항상에 Panel1 컨트롤을 그리는 간단한 예입니다 : larstech @

private void panel1_Paint(object sender, PaintEventArgs e) { 
    ControlPaint.DrawReversibleFrame(
    new Rectangle(panel1.PointToScreen(new Point(32, 32)), new Size(64, 64)), 
    panel1.BackColor, 
    FrameStyle.Dashed); 
} 
+0

, 그건 내 문제가 아니에요. 실제로 winform 외부에서 드로잉을 시작하거나 내 실제 마우스 포인트 (x, y)는 자동으로 이동합니다. – ThN

+0

@digitalanalog 예제를 추가했습니다. 좌표를 변환하지 않는 것 같습니다. – LarsTech

+0

@ larstech, 고맙습니다. 또한 RectangleToScreen을 사용할 수 있습니다. 정말 끝내주는 군. 다시 한번 감사드립니다. – ThN