많은 양의 텍스트가 포함될 수있는 주석이 달린지도를 표시하는 MFC 응용 프로그램이 있습니다. 텍스트의 크기와 글꼴이 많이 변경되지는 않지만 텍스트의 회전은 주변 선 작업과 정렬되도록 상당히 다양합니다. 이것은 기본적으로 회전을 변경할 때마다 디스플레이 컨텍스트에 새 글꼴을 만들고 선택해야한다는 것을 의미합니다. 뭔가가 좋아.MFC에서 회전 된 텍스트 출력 속도를 높이는 방법
if (TextRotationChanges)
{
m_pFont = new CFont;
m_lf.lfEscapement = NewRotation;
m_pFont->CreateFontIndirect(&m_lf);
}
CFont *OldFont = m_pDC->SelectObject(m_pFont);
m_pDC->TextOut(x,y,text,strlen(text));
m_pDC->SelectObject(OldFont);
많은 양의 텍스트를 처리 할 때 분명히 느립니다. D3D 또는 OpenGL과 같은 다른 디스플레이 엔진을 사용하지 않고이 속도를 높이는 방법이 있습니까? 다른 말로하면, 기존 선택한 글꼴에서 텍스트 회전을 변경할 수 있습니까?
n.b. 텍스트를 화면에 표시하려고 시도하기 전에 눈에 보이는 크기로 텍스트를 표시하는 것과 같은 다른 명백한 최적화를 이미 수행하고 있습니다.
+1 각 회전 각도에서 글꼴 배열을 사전 생성하는 데 +1은 전혀 생각하지 않았지만 시도해 보겠습니다. 이런 유형의 접근법을 사용하면 GDI 리소스 제한에 위배 될 수 있습니다. –
당신이 GDI 핸들 제한을 치고 있다면 그 주위에 어떤 방법도 보이지 않습니다 - 기본값은 10k입니다, 360은 그 중 작은 비율입니다, 나는 그것이 가능할 것이라고 생각합니다. X에 가장 자주 사용되는 회전 (X는 항상 <360)을 저장하고 캐시에없는 회전이 요청 될 때 가장 자주 사용되지 않는 회전을 대체하는 캐시 개체를 작성할 수 있다고 생각하지만이 많은 부기 보람있는 게임을 만들기 위해 너무 많은 속도를 낼 수 있습니다. 2, 3 또는 5의 배수로 모든 회전을 클립 할 수 있다고 생각합니다. mem reqs에 의존하십시오. 나는 그것이 시각적으로 문제가 될지 의심 스럽다. – Roel