Q&A

  • 특정 색깔Grid의 순차적 깜빡임(물흐르듯이)에 대한 질문.
안녕하세요!!!!!



파이프에서 압력 차를 나타내기 위한 프로그램을 수행중에 있습니다.



압력차의 표현은 대략 각직사각형에 각기 다른 색으로 표현하여 RGB 색깔로

(아래 예시는 진한 빨강에서 옅은 색으로 점점) 나타내었고,

유체가 흐르게끔 보이기 위해서 Timer를 이용하였어요..(편의상 3개의 직사각형만 나타냈습니다.) 깜박이는 색깔은 두색상의 아래의 색으로,물이 흐르게보이게끔 그런식으로...





그런데, 흐르게끔 보이게 할려면 각 직사각형이 순차적으로 깜빡여야하는데

(1번 직사각형 깜빡후 2번 직사각형 깜빡, 그후 3번째....그런식으로)

아래의 프로그램은 직사각형 3개가 동일하게, 같이 깜박이더군요....

이 문제를 어떻게 해결하면 좋은지 자세한 조언이나, 더 나은 프로그램의 제시를

부탁드립니다.



그리고 아래의 프로그램이 실행되는데 버그가 있는것 처럼 파이프 전체가 흔들리거나 깜빡(저정되지않은 바탕색으로)거림니다. 좀더 부드럽게, 파이프 내에서 물이 흐르는 것 처럼 표현하고 싶습니다. 이에 관련된 자료를 최대한도로 보내주시면, 정말 정말 감사하겠습니다.





procedure TForm1.Timer1Timer(Sender: TObject);

begin

if iToggle = 0 then

begin

Canvas.Pen.Color := RGB(255,10,10);

Canvas.Pen.Width := 1;

Canvas.Brush.Color := RGB(255,10,10);

Canvas.Rectangle(100,430,157,460);



Canvas.Pen.Color := RGB(255,51,51);

Canvas.Pen.Width := 1;

Canvas.Brush.Color := RGB(255,51,51);

Canvas.Rectangle(157,430,214,460);



Canvas.Pen.Color := RGB(255,76,76);

Canvas.Pen.Width := 1;

Canvas.Brush.Color := RGB(255,76,76);

Canvas.Rectangle(214,430,271,460);



end

else begin

Timer1.Interval := 100;



Canvas.Pen.Color := RGB(255,0,0);

Canvas.Pen.Width := 1;

Canvas.Brush.Color := RGB(255,0,0);

Canvas.Rectangle(100,430,157,460);



Canvas.Pen.Color := RGB(255,41,41);

Canvas.Pen.Width := 1;

Canvas.Brush.Color := RGB(255,41,41);

Canvas.Rectangle(157,430,214,460);



Canvas.Pen.Color := RGB(255,66,66);

Canvas.Pen.Width := 1;

Canvas.Brush.Color := RGB(255,66,66);

Canvas.Rectangle(214,430,271,460);



end;

iToggle := 1 - iToggle;

end;



procedure TForm1.FormCreate(Sender: TObject);

begin

iToggle := 0;

end;

end.



P.S. 위의 프로그램에 많은 조언 주신 하얀까마귀님께 다시 감사드림니다...

1  COMMENTS
  • Profile
    송재영 2000.06.23 03:19
    안녕하세요.

    음 일단 프로그램에 대한 소스를 보니 전체를 리프레쉬하는 방법을 사용하셨네여.

    음. 이렇게 되면 전체를 다시 그리기때문에 아주 빠른(?) 컴퓨터를 사용하지 않는한

    계속 깜빡이게 될겁니다.

    그러면 어떻게 해야하냐면...

    한줄 내지는 두줄씩 색을 반영하면 아마도 자연스럽게 색이 바뀝니다.

    즉 lintto 와 같은 함수를 사용하시면 자연스럽게 색이 바뀌는걸 표현하실수

    있을 겁니다.

    이만...



    이희재 wrote:

    > 안녕하세요!!!!!

    >

    > 파이프에서 압력 차를 나타내기 위한 프로그램을 수행중에 있습니다.

    >

    > 압력차의 표현은 대략 각직사각형에 각기 다른 색으로 표현하여 RGB 색깔로

    > (아래 예시는 진한 빨강에서 옅은 색으로 점점) 나타내었고,

    > 유체가 흐르게끔 보이기 위해서 Timer를 이용하였어요..(편의상 3개의 직사각형만 나타냈습니다.) 깜박이는 색깔은 두색상의 아래의 색으로,물이 흐르게보이게끔 그런식으로...

    >

    >

    > 그런데, 흐르게끔 보이게 할려면 각 직사각형이 순차적으로 깜빡여야하는데

    > (1번 직사각형 깜빡후 2번 직사각형 깜빡, 그후 3번째....그런식으로)

    > 아래의 프로그램은 직사각형 3개가 동일하게, 같이 깜박이더군요....

    > 이 문제를 어떻게 해결하면 좋은지 자세한 조언이나, 더 나은 프로그램의 제시를

    > 부탁드립니다.

    >

    > 그리고 아래의 프로그램이 실행되는데 버그가 있는것 처럼 파이프 전체가 흔들리거나 깜빡(저정되지않은 바탕색으로)거림니다. 좀더 부드럽게, 파이프 내에서 물이 흐르는 것 처럼 표현하고 싶습니다. 이에 관련된 자료를 최대한도로 보내주시면, 정말 정말 감사하겠습니다.

    >

    >

    > procedure TForm1.Timer1Timer(Sender: TObject);

    > begin

    > if iToggle = 0 then

    > begin

    > Canvas.Pen.Color := RGB(255,10,10);

    > Canvas.Pen.Width := 1;

    > Canvas.Brush.Color := RGB(255,10,10);

    > Canvas.Rectangle(100,430,157,460);

    >

    > Canvas.Pen.Color := RGB(255,51,51);

    > Canvas.Pen.Width := 1;

    > Canvas.Brush.Color := RGB(255,51,51);

    > Canvas.Rectangle(157,430,214,460);

    >

    > Canvas.Pen.Color := RGB(255,76,76);

    > Canvas.Pen.Width := 1;

    > Canvas.Brush.Color := RGB(255,76,76);

    > Canvas.Rectangle(214,430,271,460);

    >

    > end

    > else begin

    > Timer1.Interval := 100;

    >

    > Canvas.Pen.Color := RGB(255,0,0);

    > Canvas.Pen.Width := 1;

    > Canvas.Brush.Color := RGB(255,0,0);

    > Canvas.Rectangle(100,430,157,460);

    >

    > Canvas.Pen.Color := RGB(255,41,41);

    > Canvas.Pen.Width := 1;

    > Canvas.Brush.Color := RGB(255,41,41);

    > Canvas.Rectangle(157,430,214,460);

    >

    > Canvas.Pen.Color := RGB(255,66,66);

    > Canvas.Pen.Width := 1;

    > Canvas.Brush.Color := RGB(255,66,66);

    > Canvas.Rectangle(214,430,271,460);

    >

    > end;

    > iToggle := 1 - iToggle;

    > end;

    >

    > procedure TForm1.FormCreate(Sender: TObject);

    > begin

    > iToggle := 0;

    > end;

    > end.

    >

    > P.S. 위의 프로그램에 많은 조언 주신 하얀까마귀님께 다시 감사드림니다...