Fórum Problemas ao utilizar Canvas ... #162839

27/05/2003

0

Desenvolvi uma rotina para gerar o codigo de barras em componente TImage. Porem quando altero o tamanho do componente o codigo não muda de tanhamo. Vi em um exemplo que utiliza o canvas. Se alguem tiver como tirar essa duvida ou explicar como fazer ou se tem jeito de fazer o que eu quero, fico muito grato.

[size=18:65c7e62103][b:65c7e62103][b]Obs.: O que preciso é apenas pegar o Width e Height do canvas, se é que tem como.[/b:65c7e62103][/b][/size:65c7e62103]


Paganato

Paganato

Responder

Posts

27/05/2003

Marconi

O Canvas (tela) é um objeto que pertence a outro objeto. As propriedades Height ou Width são do objeto proprietário. São da TImage no seu caso.

Estou tendo um problema semelhante para fazer zoom em relatórios gerados na tela.

O que eu estou imaginando, mas ainda não testei, é de gerar os elementos gráficos em um TImage e deixa-lo com a propriedade Visible:=false, e copiar áreas parciais dele em outro Timage (ou outro objeto) ampliando com a propriedade Strech. Assim eu teria sempre o original intocavel.

Se alguem te der outra dica que funcione, por favor me mande também.

Marconi


Responder

Gostei + 0

27/05/2003

Marconi

Outra coisa que podemos fazer é deixar as propriedades image1.width e image1.height como parametros na confecção das barras. Assim quando as dimensões do objeto image1, forem alterados, acionamos o procedure que refaz o image1.canvas.

Exemplo

With Image1.canvas do begin
pen.width:=2;
MoveTo(corrigeH(0.10),CorrigeV(0.20));
LineTo(corrige(0.30),Corrige(0.20));
...
...
end;
end;



function TForm1CorrigeH(x:Integer):Integer; // corrige horizontal
begin
Result:=Round(x*Image1.width);
end;

function TForm1CorrigeV(x:Integer):Integer; // corrige vertical
begin
Result:=Round(x*Image1.height);
end;

Neste caso podemos até corrigir a espessura da linha.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar