여기서 중요한 문제 Width = width
6의 직사각형 폭을 설정한다는 것이다 (this 참조)하지만의 제품을 절단하여 얻어지는 정수로 (6, 13, 19, 26 ... 0 직사각형의 위치를 Canvas.SetLeft(rect, i * width)
설정 대략 0, 6.546, 13.092, 19.638, 26.184, ...). 보시다시피, 일부 위치는 6 단위 및 13 단위 또는 19 및 26과 같이 7 단위 떨어져 있습니다. 따라서 6 단위 사각형은 7 단위 거리를 확장하지 않습니다.
이 경우 너비를 Width = ceil(width)
(7)으로 설정하면 직사각형이 그 사이의 거리를 확장 할 수있을 정도로 넓어집니다.
this answer은 숫자가 int
인 것으로 나타내지 만 바람직하지는 않습니다. 계산을 int
으로 변환하는 경우 정수를 정수 (6 또는 7)의 배수로 설정하거나 정수를 사용하여 같은 위치 (0, 6, 13, 19, 26 ...)를 계산하는 방법을 찾아야합니다 부동 소수점 대신 산술. 전자는 산술에 맞게 드로잉을 변경하기 때문에 바람직하지 않습니다. 후자는 도면에서 경사를 유지하지만 동일한 밴딩 문제가 있습니다.
그 대답은 또한 부동 개체 버전의 그리기 개체를 사용하는 것이 좋습니다. 그것은 합리적인 접근법입니다. 그러나 이것은 단순히 정수 단위에서 더 작은 부동 소수점 단위로 반올림 오류를 줄입니다 (이 크기로). 그것들을 제거하지는 못합니다. 대형 도면에서는 회피하지 않도록 조심하지 않으면 가끔 인위적 인조물이있을 수 있습니다. 따라서 세부 정보를 이해하는 것이 중요합니다. 부동 소수점을 사용하는 경우에도 너비가 적어도 위치의 변경만큼 크게 설정되어야합니다.
또 다른 옵션은 드로잉 인터페이스에서 지원하는 경우 캔버스의 배율을 변경하는 것입니다. 배율을 1000 배로 늘릴 수 있지만 최종 배율을 같은 크기로 유지하면 배율이 6.546에서 6546으로 변경되고 너비를 6000 또는 7000 대신 정확히 6546으로 설정할 수 있습니다. 알 수 있듯이 핵심 이슈로 돌아가십시오 : 폭을 적어도 두 위치의 차이만큼 큰 값으로 설정해야합니다.
앞에서 설명한 것처럼 너비를 7로 설정하면이 그림을 사용할 수 있습니다. 제가 다른 해결책을 논의하는 이유는 일부 도면에서 폭을 6.546 이상으로 변경하면 객체 크기가 바람직하지 않게 증가하기 때문입니다. 다른 솔루션은 원하는 크기에 더 가깝게 너비를 유지할 수있게함으로써이를 향상시킵니다.
픽셀은 부동 소수점이 아닙니다. 그것들은 필수적입니다. 너비를 정수로 만들어보십시오. 너는 그들을 보지 말아야한다. –
'int width = 6;을 사용하여 테스트 한 결과 밴드가 없습니다. – Shoe
@NotALie .: 'width'를 변경하면 도면의 기울기가 변경되어 원래의 의도를 달성하지 못합니다. –