Ajuda com função Printscreen

Delphi

05/12/2012

Saudações à todos os companheiros de trabalho da área Delphi,

http://forum.devmedia.com.br/viewtopic.php?t=61370&sid=b711bae6777230a684e8fe2e161c82a6

Estou com dúvidas de onde aplicar a váriável Desktop como sendo BitMap, como citada neste post.
Alguém poderia me ajudar?

Tentei adaptar a função que tira printscreen comum, mas vejo que está meio diferente a parte do código das cordenadas do exemplo feito no post mencionado acima.

Agradeço a ajuda!
Luiz Eduardo

Luiz Eduardo

Curtidas 0

Respostas

Claudia Nogueira

Claudia Nogueira

05/12/2012

Tenta assim.
Coloca um TImage no Form e muda a propriedade Stretch pra True.

Coloca um botão pra testar o seguinte código:

var
  BackgroundCanvas: TCanvas;
  DC: hDC;
begin
  Image1.Picture.Bitmap.Width := Screen.Width;
  Image1.Picture.Bitmap.Height := Screen.Height;
  DC := GetDC(0);
  try
    BackgroundCanvas := TCanvas.Create;
    try
      BackgroundCanvas.Lock;
      try
        BackgroundCanvas.Handle := DC;
        Image1.Canvas.CopyRect(Rect(0, 0, Screen.Width, Screen.Height), BackgroundCanvas,
                               Rect(0, 0, Screen.Width, Screen.Height));
      finally
        BackgroundCanvas.Unlock;
      end;
    finally
      BackgroundCanvas.Free;
    end;
  finally
    ReleaseDC(0, DC);
  end;
end;
GOSTEI 0
Luiz Eduardo

Luiz Eduardo

05/12/2012

Tenta assim.
Coloca um TImage no Form e muda a propriedade Stretch pra True.

Coloca um botão pra testar o seguinte código:

var
  BackgroundCanvas: TCanvas;
  DC: hDC;
begin
  Image1.Picture.Bitmap.Width := Screen.Width;
  Image1.Picture.Bitmap.Height := Screen.Height;
  DC := GetDC(0);
  try
    BackgroundCanvas := TCanvas.Create;
    try
      BackgroundCanvas.Lock;
      try
        BackgroundCanvas.Handle := DC;
        Image1.Canvas.CopyRect(Rect(0, 0, Screen.Width, Screen.Height), BackgroundCanvas,
                               Rect(0, 0, Screen.Width, Screen.Height));
      finally
        BackgroundCanvas.Unlock;
      end;
    finally
      BackgroundCanvas.Free;
    end;
  finally
    ReleaseDC(0, DC);
  end;
end;


Obrigado Claudia, mas a função acima só faz redimencionar o printscreen (tela cheia) de tamanho, e não pega só um determinado item, como te disse anteriormente.

Exemplo: queria fazer uma função que tirasse um printscreen na tela, apenas do logo do site Devmedia; entendeu? ( de uma área demarcada na tela em outras palavras).

Já testei a função de printscreen tradicioanal (inclusive eu fazendo adaptações nela), mas até o presente momento, sem sucesso para este fim.

Espero que você ou alguém aqui possa me ajudar.

Aguardo.
GOSTEI 0
POSTAR