C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[20268] [질문]현재 윈도우의 bit를 내 프로그램 실행할때만 다른 bit로( 32bit (트루칼라)->24bit (트루
blueSea [mjlee77] 873 읽음    2002-07-22 14:42
안녕하세요.
항상 도움만 받는 초보입니다.
내가 만든 프로그램은 윈도우 색이 24bit로 설정해 놓은 상태에서 만들어 졌는데..
이것을 32bit로 설정되어 있는 윈도우에서 문제가 생깁니다.

문제가 되는 부분의 코드는 아래입니다.

void __fastcall TConfigForm::DrawAlarmAgain(int index, unsigned char* MyArray, TColor Color1, TColor Color2, TColor Color3)
{
//TODO: Add your source code here
     TStringGrid *strGrid = FaAlarmStringGrid;
     float start = 0, end = 0, level_hi = 0, level_lo = 0;
     float DrawStart = 0, DrawEnd = 0;
     float minf = MainForm->LfLBVal->Caption.ToDouble();

     TCanvas *Canvas = MainForm->AlarmImage->Canvas;
     Canvas->Brush->Color = clBackground;
     Canvas->Brush->Color = Color1;
     Canvas->Pen->Color = Color2;


     if( MainForm->SpurRBT->Checked)
     {
          if(MyArray[index] == 0x01)
          {

               start = StrToFloat(strGrid->Cells[1][index+1]);
               end = StrToFloat(strGrid->Cells[2][index+1]);
               level_hi = StrToFloat(strGrid->Cells[3][index+1]);
               level_lo = StrToFloat(strGrid->Cells[4][index+1]);

               DrawStart = start - minf;
               DrawEnd = end - minf;
               StartX[index] = DrawStart * IMG_WIDTH/(MainForm->SpanTrans);
               EndX[index] = DrawEnd * IMG_WIDTH/(MainForm->SpanTrans);
               LevelHigh[index] = MainForm->AlarmImage->Height
                                  * 0.01 * (MainForm->RefTrans - level_hi);
               LevelLow[index] = MainForm->AlarmImage->Height
                                 * 0.01 * (MainForm->RefTrans - level_lo);

               Canvas->MoveTo(StartX[index], LevelHigh[index]);
               Canvas->LineTo(EndX[index], LevelHigh[index]);

//               Canvas->MoveTo(40, 200);
//               Canvas->LineTo(50, 220);


               Canvas->Pen->Color = Color3;

               Canvas->MoveTo(StartX[index], LevelLow[index]);
               Canvas->LineTo(EndX[index], LevelLow[index]);


          }
          else
          {
                 Canvas->Pen->Color = Color1;
                 Canvas->MoveTo(StartX[index], LevelHigh[index]);
                 Canvas->LineTo(EndX[index], LevelHigh[index]);
                 Canvas->MoveTo(StartX[index], LevelLow[index]);
                 Canvas->LineTo(EndX[index], LevelLow[index]);
          }

          Canvas->Pen->Color = Color2;
     }

}

위처럼 되어 있는 코드를 실행하면
24bit일때는 제대로 image에 라인이 나타납니다.
32bit일때는 처음엔 image에 라인이 나타나면서 전체 화면이 백색이 됩니다.그리고 그림을 지운 다음 다시 이벤트를 주게 되면 제대로 나옵니다.
원인을 모르겠습니다.  빨리 해결해야 되는데... 도움 주시면 감사하겠습니다.

+ -

관련 글 리스트
20268 [질문]현재 윈도우의 bit를 내 프로그램 실행할때만 다른 bit로( 32bit (트루칼라)->24bit (트루 blueSea 873 2002/07/22
20269     Re:[질문]현재 윈도우의 bit를 내 프로그램 실행할때만 다른 bit로( 32bit (트루칼라)->24bit ( 유영인.Chris 768 2002/07/22
20278         Re:Re:[질문]현재 윈도우의 bit를 내 프로그램 실행할때만 다른 bit로( 32bit (트루칼라)->24bit blueSea 872 2002/07/22
20279             Re:Re:Re:[질문]현재 윈도우의 bit를 내 프로그램 실행할때만 다른 bit로( 32bit (트루칼라)->2 유영인.Chris 771 2002/07/22
20280                 Re:Re:Re:Re:[질문]현재 윈도우의 bit를 내 프로그램 실행할때만 다른 bit로( 32bit (트루칼라) blueSea 715 2002/07/22
20283                     Re:Re:Re:Re:Re:[질문]현재 윈도우의 bit를 내 프로그램 실행할때만 다른 bit로( 32bit (트루칼 유영인.Chris 777 2002/07/22
20288                         Re:Re:Re:Re:Re:Re:답변 감사합니다...^^ (귀찮게 해 드린건 아닌지...ㅜ.ㅜ)-내용없음 blueSea 720 2002/07/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.