2014-11-09 4 views
1

내 위젯에 밀리미터 격자를 그려야합니다. 그 일을 도울 수있는 수업이 있습니까? 몇 가지 수학 차트를 그리는 데 필요합니다.밀리미터 Qt 용지

+1

컴퓨터 화면에 항목을 그릴 때 밀리미터가 아닌 픽셀 단위로 도면을 지정합니다. 밀리미터 단위로 프린터에 인쇄 할 수있는 것을 목표로 삼고 있습니까? 아니면 화면에서 정확한 밀리미터 치수를 얻으려고합니까? – docsteer

+0

픽셀을 매핑하는 방법을 알기 위해서는 화면 해상도와 실제 너비 및 화면 높이를 알아야합니다. –

+0

나는 화면에서 정확한 밀리미터 치수를 얻으려고합니다. – Tatarinho

답변

2

휠을 다시 만들기 전에 차트 라이브러리 중 일부는 discussed here으로 간주하십시오. QCustomPlotQwt은 모두 포함하기 쉽고 맞춤 설정하기가 어렵지 않습니다. 둘 다 몇 가지 예를 제공합니다. 아마도 그 중 하나가 귀하의 문제를 해결하는 해결책이 될 수 있습니다.


가능한 라이브러리는 당신이 painEvent()을 재 구현 서브 클래스QWidget하여 자신 만의 솔루션을 만들 수 있습니다 귀하의 요구 사항을 충족하지 않는 경우. QPainterQPainterPath은 작업의 핵심 클래스입니다. Qt은 특히 interesting tutorials을 제공하며 특히 "기본 도면 예제"및 "페인터 경로 예제"를 제공합니다. 아마 this simple example 또는 this one을 즐기실 수도 있습니다. 이 참조에서 시작하여 그리드를 쉽게 그릴 수 있어야합니다.

마지막 Graphics View Framework

은 2D 그래픽 많은 상품을 관리하기위한 표면을 제공 QGraphicsScene (인용 문서)를 포함한다.

이러한 클래스는 위에 소개 된 페인팅 API를 활용하여 charting purposesgrids에 사용되었습니다. 이 클래스를 사용하는 동안 전반적인 좋은 성능을 보장하려면 drawBackground() 함수에서 그리드를 그리려면 예 : here (또는 배경 비트 맵 사용)과 같이 완료해야합니다.


모든 API는 픽셀에서 작업을 논의했다. 실제적으로 밀리미터 표현을 화면에 표시하는 경우 qApp 포인터에서 직접 액세스 할 수있는 QScreen 개체를 악용 할 수 있습니다. physicalDotsPerInch() (KitKat에서 무한한 값을 반환하기 때문에 Android 용 logicalDotsPerInch())과 같은 여러 기능을 제공합니다. 밀리미터에 대한 픽셀 근사값은 다음과 같이 계산할 수 있습니다.

int dotPerMillimeter = qRound(qApp->primaryScreen()->physicalDotsPerInch()/25.4) 
+0

답장을 보내 주셔서 감사합니다. 불행히도 내 프로젝트에서 이것을 달성하기 위해 Qwt 등을 사용할 수는 없습니다. 하지만 수식이 도움이 될 수 있습니다. 감사합니다 – Tatarinho

+0

알겠습니다. 글쎄, [이 좋은 대답] (http://stackoverflow.com/questions/26828636/efficiently-painting-physically-accurate-ruler-in-qt)도 고려하십시오. 목적은 통치자를 그리는 것이었지만 당신은 목표를 달성하기 위해 그것을 (그리고 내 공식)으로 만들 수 있습니다. – BaCaRoZzo