Point 개체를 사용하여 그래프를 그리기 때문에이 매개 변수로 double을 지원하기 때문에 을 설정하려고합니다. Visual C#, WindowsConsoleApplication에서 작업 중입니다.C#에서 Point 객체를 오버로드하여 double을 지원할 수 있습니까?
감사합니다.
Point 개체를 사용하여 그래프를 그리기 때문에이 매개 변수로 double을 지원하기 때문에 을 설정하려고합니다. Visual C#, WindowsConsoleApplication에서 작업 중입니다.C#에서 Point 객체를 오버로드하여 double을 지원할 수 있습니까?
감사합니다.
PointF
만 사용할 수 있습니다. 모두 System.Drawing
은 부동 소수점 연산을 지원합니다. 왜 그걸 사용하지 않니? 그렇지 않으면 실제로 double
을 사용하여 정수 드로잉 함수에 전달하려는 경우 사용자 고유의 구조를 만들어야합니다. 이 효과에 뭔가 : 당신이 Point
의 소스 메타 데이터를 보라 경우는 (정의로 이동하여), 매우 잘립니다 구현
struct MyPoint {
public double X{get;set;}
public double Y{get;set;}
public MyPoint(double x, double y) {
X = x;
Y = y;
}
public implicit operator Point() {
return new Point(X, Y);
}
}
, 당신은 당신이 구현하는 데 필요한 모든 재정 및 운영자를 볼 수 있습니다.
또한 주목할 점은 Point
은 암시 적으로 PointF
으로 변환 될 수 있지만 그 반대는 아닙니다. 잠재적 인 정밀도의 손실로 인해 지원되지 않습니다. 내가 너라면, API 설계자의 최상의 사용 관행에 어긋나는 것처럼 보이기 때문에 디자인을 다시 생각해 보겠다.
MS가 PointD (Point의 이중 버전)를 만드는 이유는 무엇입니까? –
아니요, 포인트 객체를 오버로드 할 수 없습니다.
포인트는 기본적으로 구조이므로 과부하를 지원하지 않습니다.
고유 한 클래스를 만드는 것이 지점과 동일한 방식으로 작동하는 것이 좋습니다.
희망이 도움이 될 것입니다!
나는 1600 만 픽셀의 와이드 스크린을 가지고 있기 때문에 플로트가 가진 정밀도를 다 써 버렸지 만, 콘솔 어플리케이션의 그래픽 작업을하는 것으로 나타났습니다. –