|
강영준 님이 쓰신 글 :
: 페인트박스에 그림을 쓰레드에서 그립니다.. 계속해서 그리는데요..
:
: 다른창을 박스위에 올렸다 내렸다 하면 그 부분이 지워 져 버리는데.
:
: repaint 할려면 어떻게 해야 하나요?...
:
: 음. 이래 저래 책도 찾아 보고 해봤는데..
:
: 해결책을 찾지를 못했네요..
일단 페인트박스에서 보여 주고자 하는것은 윈도우 부팅화면에 아래쪽에 바 지나가는거처럼
Gradiant기능을 구현 할려고 하는데요.. 쓰래드 Execute 부분에
void __fastcall FlowBarThread::Execute()
{
//---- Place thread code here ----
int i = 0;
Form1->chk=true;
float speed=0.0;
while(!Terminated) {
if(Form1->chk == true) {
Form1->PaintBox1->Canvas->Lock();
Form1->PaintBox1->Canvas->MoveTo(i,0);
Form1->PaintBox1->Canvas->Pen->Color = RGB(i,0,0);
Form1->PaintBox1->Canvas->Pen->Width = 5;
Form1->PaintBox1->Canvas->LineTo(i,10);
Form1->PaintBox1->Canvas->Unlock();
Sleep(10);
i++;
speed = i * 0.01;
i += (int) speed;
if(i >= 255) Form1->chk = false,i = 0;
}
if(Form1->chk == false){
Form1->PaintBox1->Canvas->Lock();
Form1->PaintBox1->Canvas->MoveTo(i,0);
Form1->PaintBox1->Canvas->Pen->Color =RGB(255-i,0,0);
Form1->PaintBox1->Canvas->Pen->Width = 5;
Form1->PaintBox1->Canvas->LineTo(i,10);
Form1->PaintBox1->Canvas->Unlock();
Sleep(10);
i++;
speed = i * 0.01;
i += (int) speed;
if(i >= 255) Form1->chk = true, i = 0;
}
}
}
위와 같이 구현 했는데.. 쪼매 조잡 합니다.. 뭔가 흘러 가는 느낌은 나드군요.. 나중에 업해야 될 부분이구요..
그리고 PaintBox1의 OnPaint 에서 .. 가려졌다 다시 살아 나는넘을 표현해줘야 되는데.
여러가지 방법을 동원해봤지만.. 쓰래드에서 계속 움직이기 깨문에..
다른 창으로 PaintBox1 부분을 긁어 버리면 부자연스럽드라구요..
좋은 방법 있으면 .. 알려 주세요.. 부탁 드립니다..
|