2011-06-13 4 views
2

위젯, 버튼 등 Linux에서 GUI를 만들기위한 사용자 정의 라이브러리를 개발하려고합니다. 이제 X11을 사용하여 사용자 인터페이스를 만드는 방법을 배우고 있습니다. 그 Xlib. 지정된 크기의 멋진 창을 지정한 위치, 지정된 배경색 및 점, 직사각형, 호를 그리는 가능성에 도달합니다. 그러나 내가 첫 번째 서클을 그렸을 때 서클이 이 아닌 사실로 인해 실망했습니다.. 모든 단일 픽셀을 사각형으로 볼 수 있습니다.Xlib을 사용하여 앤티 앨리어싱 사용 가능

이제 문제는 간단합니다. X를 말할 수있는 방법이 있습니까 : 그림을 그리기 전에 무엇인가를 antialias하시기 바랍니다.? 아니면 XDrawArc를 사용하지 말고 원의 각 점에 대해 XDrawPoint를 호출하는 사용자 정의 함수를 사용해야합니까? 아니면 세 번째 솔루션이 있습니까?

미리 감사드립니다.

답변

4

짧은 대답은 "아니오"입니다. Xlib은 에일 리어 징 제거를하지 않습니다.

더 이상 대답은 "당신은 카이로 그래픽과 같은 고급 API를 사용할 수 있습니다"입니다. 자기 자신을 굴릴 필요는 없습니다.

+0

카이로 Craphics는 클라이언트 측 래스터 화 및 업로드를 수행 할 수 있습니다. X11에 머물고 싶다면 XRender를 사용하는 것이 일반적입니다. – datenwolf

+0

@datenwolf : Cairo는 가능한 경우 XRender를 사용할 수 있다는 것을 알고 있습니다. –

+0

예 올바른 옵션으로 컴파일하면 그렇게 할 수 있습니다. 그러나 나는 OP가 가능한 한 X11에 가까워지고 싶어한다는 인상을 가지고있다. – datenwolf

2

발생한 문제는 X11 핵심 프로토콜의 제한 사항입니다. 기술적으로 앤티 앨리어싱을 추가 할 수는 있지만 가능하지는 않습니다.

대신 XRender 확장 기능이있어 멋진 앤티 엘리 어싱 된 프리미티브를 제공합니다. 벡터 글꼴을 사용하여 앤티 엘리 어싱 된 텍스트를 렌더링하려면 Xft를 조사해야합니다.

0

사용자 고유의 안티 앨리어싱 알고리즘을 사용할 수 있습니다. 1) TrueColor 포인트를 그리는 함수 (즉, XCB을 사용하는 경우 xcb_poly_point())와 루프에 대해 을 사용하는 두 가지 프리미티브가 있습니다.