나는 거의 동일한 상황을 가지고 있으며이를 수행 할 방법이 있다고 생각합니다.
내 문제는 텍스트 바운딩 박스가 표면에 그려진 복잡한 선들 (아마 부드럽게 만들어 졌음)과 교차하는지 여부를 찾는 것입니다. 이것은 현재 병목 현상이며 신속한 교차로 처리로 sw가 아마 100x 속도를 낼 것입니다. 누가 알아.
어쨌든 ntd의 언급 덕분에 cairo_in_stroke이 문제를 해결하기 시작했습니다. 여기에 문제가 있습니다.자체 cairo_in_stroke
만 알려
"주어진 점은 전류 경로와 쓰 파라미터 주어진 cairo_stroke() 동작에 의해 영향을받을 영역 내에 있는지 여부" 이것은 꽤 쓸모가 없다. 경로 폭이 일시적으로 너무 넓어서 경로가 영역을 얻기 시작하지 않는 한.
- 세트 라인은 경계 상자의 절반 폭과 높이가 중심
에 도달 할 때까지, 양쪽의 경계 상자로, 배, ...을
- 시험 위치의 X를 (의이 X를 부르 자)
테스트 된 영역은 바운딩 박스가 아니며이를 근사하는 원 체인이 겹쳐져 있습니다. 안전면을 원한다면 선 너비를 추가하면 바운딩 박스가 실제로 만지지 않게됩니다.
실제로이 트릭을 수행하는 방법을 알게되면보고 할 것입니다.
카이로에서 교차로 확인 코드가 많이 있습니다. 클리핑에 관한 것입니다. 맞습니까? 코드가 분명히 있습니다. 단지 사용자에게 노출되지 않습니다. 내가 제안한 것처럼 래스터 기반의 해결 방법을 사용할 것입니다.하지만 여전히 약간 바보 같습니다. 아, 카이로는 래스터 화를 목표로하지 않고 벡터 형식을 출력합니다. 나는 카이로가 벡터 기반 드로잉 라이브러리라고 말하고 간단한 작업을 수행하기 위해 래스터 이미지를 사용해야하는 것은 어리석은 것처럼 보입니다. – pafcu
pafcu, 나는 래스터 이미지 경로가 우아하지 않다는 것에 동의한다. 그러나 요구 사항에 따라 구현이 더 빠르면 실행 가능하지만 단순하지 않은 솔루션이 더 바람직합니다. 때로는 하드 드라이브를 폐기해야하고 민감한 데이터를 읽을 수 없도록해야합니다. 우아하지만 시간 소모적 인 접근 방식은 무작위 데이터로 7 배 또는 35 배 재 작성입니다. 대신, 나는 단지 콘크리트 테라스에 가져 가서 썰매 망치 나 곡괭이로 몇 번 쳤습니다. –
Bob, Cairo API가 픽셀 단위로 반복을 제공한다는 사실을 알려 주시기 바랍니다. 나는 거기에있는 기억을 가지고 있지만 그것을 발견 할 수 없었다. 추가 : it 's cairo_image_surface_get_data() – akauppi