por chipselect » 02 Ago 2007 15:37
boa tarde Wagner, sua imagem não abriu no meu Firefox... mas eu fiz uma "rolagem" em canvas quando fiz meu próprio visualizador de relatório de impressão (época que gostava de fazer tudo na unha). Eu usava metafile e o scroll era limitado ao tamanho do papel de impressão. Segue o código:
[code]
void TFormRelatorios::printScreen()
{
TMetafile *m;
TRect retangulo;
long x,y;
clearScreen();
m = (TMetafile *) lista->Items[indiceAtual];
y=((float)m->Height/m->Width)*imagem->Width;
x=y-imagem->Height;
ScrollBar1->Max=(int)x-1;
if(ScrollBar1->Position>=x)ScrollBar1->Position=x;
retangulo.left=0;
retangulo.right=imagem->Width;
retangulo.top=-1*ScrollBar1->Position;
retangulo.bottom=imagem->Height+x+retangulo.top;
imagem->Canvas->Brush->Color=clBtnFace;
imagem->Canvas->Rectangle(0,0,imagem->Width,imagem->Height);
imagem->Canvas->Brush->Color=clWhite;
imagem->Canvas->Rectangle(retangulo);
imagem->Canvas->StretchDraw(retangulo,m);
}
void TFormRelatorios::clearScreen()
{
TRect rect;
rect.left=0;
rect.top=0;
rect.right=imagem->Width;
rect.Bottom=imagem->Height;
imagem->Canvas->Brush->Color=clGreen;
imagem->Canvas->FillRect(rect);
}
[/code]
Caso você esteja usando as funções de desenho geométrico, como linhas, você pode causar um "clearScreen" em cada amostra nova, mandar um "repaint" no componente e então, no evento de pintura do componente, desenhar as últimas 25 amostras após chamar o default draw dele. Isso é melhor do que usar "janelinha de desenho" como fiz, porque no seu caso não há limite para o "fim do scroll", o que poderia estourar os limites das variáveis de coordenadas usando "janelinha de pintura".
Obviamente o processo é lento, depende de sua taxa de atualização desejada, caso seja "alta" para a vcl, vai ter que escrever um "componente" mais veloz, derivado do TPanel por exemplo.
O Turbo C++ Explorer não pode instalar pacotes adicionais além de dificultar a instalação de componentes novos, mas caso tenha o código fonte do componente, é possível incluir o componente no TC sim, só dá um trabalhão, e não infringe a licença de uso do TC++ Explorer.
Caso seja um projeto de hobby (não comercial), então baixe o TurboTweaker 1.17, pressione "Crtl + Alt + L" numa tela específica para aparecer a opção "desbloquear o TC" que você terá um TC Professional e poderá instalar qualquer componente.