안녕하세요.
sin 파형 같은 긴 그림을 스크롤 해가면 보기위해
프레임위에다 ScrollBox를 올리고 그위에 Image를 올려 Image의 Canvas를 이용해 sin파형을 그렸습니다. 그리고 sin파형의 길이에 맞게 Image 페널이 늘어나도록 코딩했습니다.
Image페널이 늘어나니 ScrollBox에 스크롤바가 생겼는데,
문제는 스크롤바를 스크롤해보면 가려졌던 Image 페널 부분의 그림이 다시 안그려지네요.
Image에는 OnPaint 메소드도 없는거 같고… 참 난감하네요…
대강의 코드는 아래와 같습니다. 캡쳐한 그림은 첨부하겠습니다.
begin
Form1.mainpan.Canvas.Pen.Width := 2;
Form1.mainpan.Canvas.Pen.Color := clRed;
while (t < 1) do
begin
R := int(20 * sin(2*pi*freque*t) + 128);
ir := strtoint(CurrToStr(R));
Form1.mainpan.Width := x;
Form1.mainpan.Canvas.MoveTo(x-1,ir1);
Form1.mainpan.Canvas.LineTo(x,ir);
ir1 := ir;
x := x+1;
t := t + 0.001;
end;
프레임보다는
tScrollBox에다가 이미지를 올려놓고 해보세요
아주 잘 됩니다.그림이 지워지지 않고요...