Problemas ao utilizar Canvas ...
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]
[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
Curtidas 0
Respostas
Marconi
27/05/2003
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
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
GOSTEI 0
Marconi
27/05/2003
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.
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.
GOSTEI 0