2012-10-18 5 views
2

저는 플래시 기반 앱을위한 간단한 그래픽 편집기를 개발하고 있습니다. 내 편집자에게는 스케일링의 가능성이 있습니다. 스케일링 범위가 큽니다 (최대 스케일은 16.0이고, 최소 스케일은 0.001이며 기본 스케일은 0.2입니다). 따라서 사용자가 두께가 0.1 또는 300.0 인 선을 그릴 수 있으며 가능한 선 두께 (Graphics.lineStyle())가 위쪽 테두리를 가진 것처럼 보입니다. 내가 찾은 것처럼 livedocs 최대 값은 255입니다. 따라서 두께가 255.0보다 크면 두께가 255.0 인 선이 그려집니다. 위에서 언급 한 테두리가 있는지 여부와 그 정도가 큰지 여부 내 질문에 바로 여기에 : drawPath() 또는 lineTo() 방법과선 그리기 : Graphics.lineStyle()에 두께 한계가 있습니까?

  1. 지금 내가 그리는거야 라인. 두께가 더 크면 255.0보다 큰 값을 가진 자연스러운 walkarround는 세그먼트 대신 직사각형을 그리고 세그먼트 끝 부분에 두 개의 원을 그립니다 (lineTo() 대신). 또는 심지어 두 개의 얇은 부분과 두 개의 반원을 그리고 내부를 채우는 것입니다. 어쩌면 더 우아하고 빠른 해결책이 있을까요? 라인의 두께가 크지 만 255.0 (예를 들어 100.0) 다음 작은 경우
  2. 또 다른 질문은, 빠른 lineTo()과 선 그리기 또는 두 개의 얇은 부분과 두 개의 반 동그라미 그리기와 어떤 내부를 채울?
  3. 그리고 마지막으로, 누군가가 모든 정보를 읽을 수있는 좋은 기사/책을 알고 있습니다. flash.display.Graphics 클래스의 모든 메서드 (또는 특정 문서/그래픽을 플래시하지 않은 것)를 읽을 수 있습니까?

모든 의견에 감사드립니다. 미리 감사드립니다.

+1

수학은 매우 복잡한 얻을 수 있지만, 컨테이너에 선을 그릴과 그 크기를 조절 할 수 있어야한다. – francis

답변

4

컨테이너에 줄을 넣는 것이 직사각형과 여분의 원을 그릴 때보 다 더 효율적이고 효율적일 것이라고 f-a에 동의합니다.

나는 수학이 운동하기에 너무 어려울 것이라고 생각하지 않습니다. 효율을 위해 선 스타일이 255를 넘을 경우에만 이렇게해야합니다.

선을 고정하기 위해 표시 객체를 설정하려면 선의 너비를 절반으로 줄이십시오 (길이는 동일하게 유지할 수 있습니다) . 그런 다음 새 스프라이트를 만들고 스프라이트의 선을 절반 크기로 그립니다 (예 : 300을 원하면 150으로 그립니다). 모든 변환을 새 스프라이트에 적용 할 수 있도록 (0,0)에서 시작하여 세그먼트를 직선으로 그리는 것이 가장 간단합니다.

여기에서 원하는 선 두께를 얻기 위해 스프라이트의 scaleY를 두 배로 늘릴 수 있습니다. 동일한 길이를 유지해야하며 끝은 올바르게 반올림되어야합니다.

희망이 도움이되었습니다!

그래픽 클래스 작업을위한 멋진 리소스는 Flash 및 Math입니다. 이 사이트에는 몇 가지 멋진 효과와 작업 예제 및 소스 코드가 있습니다.

http://www.flashandmath.com/

+0

+1 유용한 링크 및 답변 – MickMalone1983