-1
직사각형의 정점이 5 개 있습니다. 사각형을 특정 크기로 팽창시키고 싶습니다. x라고 해. 어떻게 그 점을 찍을 수 있습니까? 사각형은 System.Drawing.Rectangle 개체가 아닌 사용자 지정 구조체입니다. 제발 제안 해주세요.정점이 주어진 사각형 모양을 부 풀리는 방법
직사각형의 정점이 5 개 있습니다. 사각형을 특정 크기로 팽창시키고 싶습니다. x라고 해. 어떻게 그 점을 찍을 수 있습니까? 사각형은 System.Drawing.Rectangle 개체가 아닌 사용자 지정 구조체입니다. 제발 제안 해주세요.정점이 주어진 사각형 모양을 부 풀리는 방법
이것은 중앙에 사각형의 상대 팽창 :
struct Rect {
public PointF p1 { get; set; }
public PointF p2 { get; set; }
public PointF p3 { get; set; }
public PointF p4 { get; set; }
public PointF p5 { get; set; }
}
void RectResize()
{
// input rectangle and sample vertices
Rect input = new Rect();
input.p1 = new PointF(80, 200);
input.p2 = new PointF(160, 340);
input.p3 = new PointF(470, 160);
input.p4 = new PointF(390, 20);
input.p5 = new PointF(80, 200); // same as p1
PointF[] r1 = { input.p1, input.p2, input.p3, input.p4 }; // conversion to array, easier to manipulate
float ratio = .3F; // inflation factor
PointF center = new PointF(r1[0].X + (r1[2].X - r1[0].X)/2, r1[0].Y + (r1[2].Y - r1[0].Y)/2);
PointF[] r2 = new PointF[4]; // output array
for (int i = 0; i < 4; i++)
{
r2[i].X = center.X + (r1[i].X - center.X) * ratio;
r2[i].Y = center.Y + (r1[i].Y - center.Y) * ratio;
}
// convert output to struct Rect if needed
Rect output = new Rect();
output.p1 = r2[0]; output.p2 = r2[1]; output.p3 = r2[2]; output.p4 = r2[3]; output.p5 = r2[0];
// demo
Graphics g = this.CreateGraphics();
g.DrawPolygon(Pens.Blue, r1);
g.DrawPolygon(Pens.Red, r2);
}
이차원 사각형 네 정점을 갖고, 삼차원 구형 여덟있다. 음, 3D? 그리고 그게 무슨 뜻입니까 : _ 사각형을 특정 no_inflate ?? 요인으로 측면을 확대? – TaW
첫 번째와 다섯 번째 꼭지점은 기본적으로 닫힌 사각형 모양으로 동일합니다. 그래서, 그것의 2 차원 직사각형. – WAQ
나는 그것이 회전하고 있다고 가정한다 (그렇지 않으면 질문은 사소 할 것이다). 중선과 대각선의 각도를 계산할 것입니다. 각 모서리에 대한 거리 형식 MP는 새로운 모서리를 찾기 위해 인수로 곱할 수 있습니다. – TaW