Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Timagen aumentar con jpg (https://www.clubdelphi.com/foros/showthread.php?t=87530)

emeritos 19-01-2015 09:31:12

Timagen aumentar con jpg
 
Hola Dilferos.

Lo que estoy intentando hacer es aumentar la imagen de un Timagen. Si es bmp funciona bien pero si es un jpg me sale este error:
"programa exception class EInvalidOperation with message 'Can only modify an image if it contains a bitmap".

El proceso se ejecuta en el evento del Timagen OnMouseMove. ¿ Que me esta fallando con el jpg?



Código Delphi [-]
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, MemDS, DBAccess, MyAccess, DBCtrls, Grids, DBGrids, CRGrid,
  Jpeg, ExtCtrls, StdCtrls, FileCtrl, ComCtrls, Buttons, GraphicEx,
  EDBImage;
.
.
.

procedure Tfrmvehiculos.imgMainMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
var
  Seleccion: TRect;
begin
    pbZoom.Visible := True;
    tbZoom.Visible := True;
    if ssLeft in Shift
       then
          begin
              Seleccion.Left:= X - 50;
              Seleccion.Right:= X + 50;
              Seleccion.Top:= Y - 50;
              Seleccion.Bottom:= Y + 50;
              Copiar(imgMain.Canvas.Handle,pbZoom.Canvas.Handle,Seleccion,tbZoom.Position);
          end;
end;

procedure Copiar(SrcDC, DestDc: HDC; SrcRect: TRect; Zoom: Integer);
var
  Ancho, Alto: Integer;
begin
  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);
end;

radenf 19-01-2015 23:02:18

La función StretchBlt permite sólo trabajar con Bitmaps (LINK)
Creo que deberías transformar primero el archivo Jpeg en Bitmap, hacer la operación de zoom y convertir el Bitmap resultante en Jpeg.
Para hacer las conversiones puedes recurrir al truco publicado en este HILO
Saludos


La franja horaria es GMT +2. Ahora son las 03:42:13.

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