2017-10-30 4 views
0

미니 도형 세 개의 버튼 (직사각형, 원 및 선)이있는 응용 프로그램을 만들려고합니다. 마우스로 도형을 선택하고 움직이는 데 문제가 있습니다. C에서 마우스로 패널에 원 또는 직사각형과 같은 그림을 그리는 방법 #

class rectangle : shape 
{ 
    public int length { get; set; } 
    public int width { get; set; } 

    public override void Draw(Graphics g) 
    { 
    g.DrawRectangle(new Pen(color), new Rectangle(startx, starty, width,length)); 
    } 
} 

지금, 나는 사각형의 어떤 부분에 클릭 할 때마다 내 panel1_MouseDown 내 패널에서 사각형을 선택합니다 : 예를 들어 나는 모양에서 색상, 두께 상속이 사각형 클래스가 있습니다. 그려진 도형은 모두 lstShapsOnForm이라는 목록에 추가되고 drawable은 그리기 및 속성 x y의 추상 메서드가있는 추상 클래스입니다.

abstract class Drawable 
{ 
    public int x { get; set; } 
    public int y { get; set; } 
    public abstract void draw(Graphics g); 
} 

private void panel1_MouseDown(object sender, MouseEventArgs e) 
{ 
    foreach (Drawable o in lstShapsOnForm) 
    { 
     if (e.Location.X >= o.x || e.Location.X < o.x) 
     propertyGrid1.SelectedObject = o;  
    } 
} 

어떻게이 일을해야 ?

+0

[그림을 그리면 어떻게 그 원을 컨트롤로 처리 할 수 ​​있습니까? - 도형 이동 및 선택 (https://stackoverflow.com/q/38345828/3110834) 또는이 게시물 [C#에서 도형 드래그 및 이동 방법] (https://stackoverflow.com/q/38747027/3110834)을 참조하십시오. –

+0

감사합니다. 도움이되었다. :) – Zahra

+0

환영합니다 :) –

답변

0

간단한 것은 그들이에서 클릭 한 알고 그것을 모양의 책임을, 그래서 IsInside 방법의 예를 추가하는 것입니다 들어

var shapeHit = lstShapsOnForm.FirstOrDefault(s => s.IsInside(e.Location.X, e.Location.Y));  
if (shapeHit != null) 
    propertyGrid1.SelectedObject = shapeHit; 

: 테스트에 그런

abstract class Drawable 
{ 
    public int x { get; set; } 
    public int y { get; set; } 
    public abstract void draw(Graphics g); 
    public abstract bool IsInside(int x, int y); 
} 

을 너비와 높이를 알고 있다고 가정하면 (직사각형이라면) x와 y 속성이 왼쪽 상단에 있다고 가정하면 다음과 같이 somehting이됩니다.

public override bool IsInside(int mouseX, int mouseY) 
{ 
    return 
     mouseX >= x && 
     mouseX <= x + width && 
     mouseY >= y && 
     mouseY <= y + height; 
} 

원과 선 ..... Google에서 'x/y 점이 원/줄에 있는지'를 판단하는 방법을 제안합니다. 반지름 (원의 경우)과 2 줄의 점 (선의 경우)을 사용하여 테스트가 수행됩니다.

+0

하지만 e.location을 찾아내는 방법을 모르는 상태입니다. 모양이 안쪽에 있습니까 – Zahra

+0

어느 하나 - 사각형, 원, 선 또는 모두 ? – mikelegg

+0

그들 모두. 어떤 모양이 패널에 그린. – Zahra

관련 문제