2016-10-28 6 views
1

win32 C/C++로 작성된 시스템에서 작업하면서 GDI를 사용하여 복잡한 시스템 (열 교환기)의 단면을 그렸습니다. 작성된 코드의 대부분은 C 기반입니다 C++ 및 따라서 객체 지향 프로그래밍 없음). 이 시스템에서 GDI +를 사용할 수 있을지 궁금합니다.GDI를 사용하는 GDI +를 GDI를 사용하는 레거시 C 기반 win32 시스템과 함께 사용

현재 모든 코드는 HPEN, HBRUSH, Polygon(), Rectangle(), MoveToEx(), LineTo(), DrawText() 등의 기본 GDI 프리미티브를 사용하고 있습니다. GDI + 툴팁에 대한 컨포넌트에 대한 컨텍스트 상세 정보를 그리는 방법은 SO question을 참조하십시오. GDI +의 글꼴 렌더링은 GDI가 (link)만큼 효율적이지 않다는 것을 읽었습니다.

요약하면이 오래된 시스템에서 GDI +를 사용할 수 있습니까? (거대한 코드 기반을 가지고 있기 때문에 다시 작성할 수 없습니다). 둘째, GDI +로 이동하면 성능이 저하됩니까?

+0

최악의 경우 비트 맵에서 GDI를 사용하여 그리기 시작한 다음 GDI +로 계속 진행할 수도 있고 화면의 비트 맵 또는 GDI가 처음으로 그린 ​​곳에서 블립 할 수도 있습니다. 화면의 드로잉에서 코드의 레거시 부분에 대한 비트 맵 드로잉으로의 전환이 DC 생성에 있어야합니다. 실적이 좋으면 직접 측정하는 것보다 나은 방법은 없습니다. –

+1

근본적인 C 기반 API를 사용하는 것은 불가능하지 않지만 분명히 잔인하고 비정상적인 처벌이며 제대로 문서화되지 않았습니다. 이 프로젝트에 C++ 코드를 추가하려면 C++ 페인팅 도우미 함수 인 extern "C"를 선언하여 링커가 만족할 수 있도록하십시오. –

답변

-2

이 시스템에서 GDI +를 사용할 수 있는지 궁금합니다.

GDI+ documentation은 대답이 예라고 제안합니다.

특히는 말한다 :

개발자 대상

GDI는 + C++ 클래스 기반 인터페이스는 C/C++ 프로그래머에 의해 사용하도록 설계되었습니다. Windows 그래픽 사용자 인터페이스 및 메시지 기반 아키텍처에 익숙해야합니다.

더 느릴지 궁금한 점이 있다면, 성능면에서 손실이 거의 없을 것입니다. 이는 동일한 Win32 GDI API 기능에 비해 얇은 C++ 계층 일 뿐이 기 때문입니다.

+5

아니요, GDI +는 GDI 위에있는 얇은 계층이 아닙니다. GDI +는 더 높은 품질의 그래픽을 제공하기 위해 처음부터 모든 것을 수행하는 자체 사용자 지정 드로잉 모델입니다 (IIRC GDI +는 소프트웨어에서이 모든 작업을 수행하므로 GDI보다 성능이 좋지만 100 % 확실하지는 않습니다). 즉, OP는 구체적으로 C 인터페이스를 요구했고, GDI +는 "플랫 API"(그러나 여기에는 드래곤)가 있습니다. OP는 가능한 한 많은 사람들을 기쁘게하고 요구 사항을 알 필요가 없으므로 어느 API가 목표에 가장 적합한 지 결정하기 위해 평가하고 벤치 마크합니다. – andlabs

+0

내가 게시 한 링크는 * C/C++ 프로그래머가 사용할 수 있도록 설계된 것으로 * 이는 나에게 C 프로그래머에게도 유용한 솔루션이라고 제안합니다. – jussij

+0

맞지만 다른 부분은 C++ 인터페이스에 대해 이야기했거나 적어도 읽었을 때와 같습니다. OP가 우연히 동일한 암시에 도달 한 경우를 대비하여 C- 특정 정보를보다 직접적으로 강조하기 위해 제공했습니다. 오해의 사과. – andlabs