Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #8  
Antiguo 15-12-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Usando como base el ejemplo19, cambiamos el codigo por este otro:
Código Delphi [-]
procedure Copiar(DestDc: HDC; Zoom: Integer);
var
  SrcWindow: THandle;
  SrcDC: HDC;
  SrcRect: TRect;
  Ancho, Alto: Integer;
begin
  // Obtenemos las coordenadas de la ventana activa
  GetWindowRect(GetForegroundWindow,SrcRect); 
  // Lo intersecamos con el area de trabajo
  IntersectRect(SrcRect,SrcRect,Screen.WorkAreaRect);
  SrcWindow:= GetDesktopWindow;
  if SrcWindow <> 0 then
  begin
    SrcDC:= GetDC(SrcWindow);
    if SrcDC <> 0 then
    try
      Ancho:= SrcRect.Right - SrcRect.Left;
      Alto:= SrcRect.Bottom - SrcRect.Top;
      StretchBlt( DestDC, 0, 0, Ancho * Zoom, Alto * Zoom, SrcDC, SrcRect.Left,
        SrcRect.Top, Ancho, Alto, SRCCOPY);
    finally
      ReleaseDC(SrcWindow,SrcDC);
    end;
  end;
end;

procedure TfrmMain.tbZoomChange(Sender: TObject);
begin
  pbZoom.Canvas.FillRect(pbZoom.Canvas.ClipRect);
end;

// Esto es lo mismo de antes solo que ahora no pasamos las coordenadas a la funcion Copiar
procedure TfrmMain.RelojTimer(Sender: TObject);
var
  Bitmap: TBitmap;
begin
  if btnCopiar.Checked then
  begin
    Copiar(pbZoom.Canvas.Handle,tbZoom.Position);
  end;

  if btnBorrar.Checked then
  begin
    pbZoom.Canvas.FillRect(pbZoom.Canvas.ClipRect);
    Copiar(pbZoom.Canvas.Handle,tbZoom.Position);
  end;

  if btnBuffer.Checked then
  begin
    Bitmap:= TBitmap.Create;
    try
      Bitmap.Canvas.Brush.Color:= pbZoom.Canvas.Brush.Color;
      Bitmap.Width:= pbZoom.Width;
      Bitmap.Height:= pbZoom.Height;
      Bitmap.Canvas.FillRect(pbZoom.Canvas.ClipRect);
      Copiar(Bitmap.Canvas.Handle,tbZoom.Position);
      pbZoom.Canvas.Draw(0,0,Bitmap);
    finally
      Bitmap.Free;
    end;
  end;
end;

Puede que esto se aproxime un poco mas a lo que buscas.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Que estoy haciendo Mal esimon SQL 4 04-07-2006 21:55:25
La web que estoy haciendo (si, ya esta colgada) papulo HTML, Javascript y otros 25 11-01-2006 15:47:42
urgente:Estoy haciendo informes con html pmfras Impresión 1 07-09-2005 16:46:52
Que estoy Haciendo mal jostrix PHP 1 01-11-2004 01:29:16


La franja horaria es GMT +2. Ahora son las 10:27:13.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi