|
몇가지 테스트를 해보니.. 조금은 이해가 안되는 상황이네요..
현재 TImage 컨트롤의 Width는 50 이고 Height 는 4096 입니다..
이때 문제가 생기는데.. 고급형 비디오 카드를 쓴 개발자 노트북에서는 괜찮았는데
내장칩셋을 사용한 PC에서는 사양에따라 256위치 혹은 512위치 까지만 출력이 되는 기이한 현상이었습니다..
그래서 몇가지를 더 테스트 해본 결과 Width가 145를 넘어가야만 정상적으로 출력되네요-.-;;
일단 임시로 사이즈를 늘려놓고 포지션 잡아서 다시 그리게는 해놨는데..
어떻게 된 내용인지 혹이 아시는분 계신가요?
이즈 님이 쓰신 글 :
: 안녕하세요..
:
: 요즘 뭔가를 하나 만들고 있는데요 생전 처음보는 문제가 발생해서 이렇게 문의를 드립니다.
:
: TImage의 Canvas에 직접 그린 내용이 같은 프로그램임에도 다른 컴터에서 다르게 나타나는 증상입니다..
:
: 첨부된 파일의 앞에부분이 이상없는 개발컴이구요.. 뒷부분이 다른컴 입니다..
:
: 사양을 놓고 보자면..
:
: 개발컴 : 코어2 듀오, 4G RAM, XP SP3
: 코어2 듀오, 2G RAM, XP SP3
:
: 다른컴 : 코어2쿼드, 1G RAM, XP SP3
:
: 램때문인가 싶어서 살펴봐도 프로그램이 사용하는 메모리는 정말 얼마 안됩니다..
: GDI객체 사용량이 많아서 그런가 싶어 리소스를 살펴봐도 60개도 안쓰고 있구요..
:
: 코드는 간단합니다.
:
: void __fastcall TFrameCompare::DrawGaugeY(TCanvas *C, int nClientX, int nClientY)
: {
: int nX, nY;
: double dbRatioY = nClientY/m_nYCnt;
: C->Lock();
:
: TColor oldColor = C->Pen->Color;
: C->Pen->Color = TColor(CLR_RED);
:
: for(nY=0; nY < m_nYCnt; nY++)
: {
: C->MoveTo(nClientX, nY*dbRatioY);
:
: if(nY%GAUGE_Y_LONG_EVERY)
: {
: C->LineTo(nClientX-GAUGE_Y_SIZE_SHORT, nY*dbRatioY);
: }
: else
: {
: C->LineTo(nClientX-GAUGE_Y_SIZE_LONG, nY*dbRatioY);
: C->TextOut(nClientX - GAUGE_Y_SIZE_LONG - C->TextWidth(AnsiString(nY)), nY*dbRatioY, AnsiString(nY));
: }
: }
:
: C->Pen->Color = oldColor;
: C->Unlock();
: }
: 혹시 이런문제 겪어보신분 계신가요?
|