Ajustar uma imagem via programação

Delphi

27/04/2004

eu estou fazendo um relatorio que na parte superior tem o logo do cliente.. quando ele quiser trocar o logo eh soh colocar o logo novo em um diretorio padrao que o sistema quando abrerto novamente ele pega esse logo novo... mas voltando ao topico... no quickreport tem o componente QRImage.. soh que ele nao tem a propriedade proportional como um image normal... eu tenho que verificar o tamanho do logo e ver se o tamanho do logo eh maior do que o espaço disposto a ele .. se for tenho que redimencionar.. pas ele fica desproporcional quando faço isso com uma imagem maior que o espaço.... ela fica destorcida.;. sera que tem algum jeito de fazer um procedimento como o proportional do image.

valew ..


Zumbi

Zumbi

Curtidas 0

Respostas

Nildo

Nildo

27/04/2004

Neste caso você tem que programar isto. O que você deve fazer é pegar a porcentagem da diferenca de tamanho entre o espaçamento Horizontal e Vertical do Logotipo dele, e ir diminuir proporcionalmente (utilizando a diferenca acima dita) o Width e Height da imagem até o tamanho que cabe no espaço que você deseja. Mas não se esqueça de setar Streched como True.

Acho que está meio complicado a explicação, mas a ideia é essa! Uma vez eu fiz algo exatamente como o que você precisa mas perdi o fonte.

Entendeu?


GOSTEI 0
Talisjonatas

Talisjonatas

27/04/2004

Caro amigo, segue a procedure.


procedure ProportionalHeight(var Image: TqrImage; NewHeight:Integer);
var
  W, H: Integer;
  Fator: Double;
begin
  with Image do
    begin
      try
        Visible := False;
        Stretch := False;
        AutoSize := True;

        W := Width;
        H := Height;

        Stretch := True;
        AutoSize := False;

        if NewHeight > H then
          begin
            Fator := NewHeight / H;
            Image.Width := Trunc(W * Fator);
            Image.Height := NewHeight;
          end;

        if NewHeight < H then
          begin
            Fator := H / NewHeight;
            Image.Width := W div Trunc(Fator);
            Image.Height := NewHeight;
          end


      finally
        Visible := True;
      end;
    end;
end;


Grato.


GOSTEI 0
POSTAR