Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 09-01-2023
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Si lo que deseas es bajar el tamaño de la imagen en pixels puedes usar Stretch de TImage o con la API StretchBlt de GDI pero el resultado es mejor usando GDIplus. En este hilo explico como hacerlo con GDIplus Flat con dos funciones básicas:
Código Delphi [-]
//---------------------------------------------------------------------------
// Dibuja un Bitmap en un hDC ajustando su tamaño para que quepa entero
// en las coordenadas dadas
procedure DrawImageRect(DC: HDC; Bitmap: HBITMAP; X, Y, W, H: integer);
var
  Graphics: Pointer;
  GBitmap:  THANDLE;
begin
  GdipCreateBitmapFromHBITMAP(Bitmap, 0, GBitmap);
  GdipCreateFromHDC(DC, Graphics);
  GdipDrawImageRect(Graphics, GBitmap, X, Y, W, H);
  GdipDisposeImage(GBitmap);
  GdipDeleteGraphics(Graphics);
end;

Código Delphi [-]
//-----------------------------------------------------------------------------
// Crea y devuelve un Bitmap con unas nuevas dimensiones y la imagen ajustada a estas
function CreateResizeBitmap(Bitmap: HBITMAP; H, W: integer): HBITMAP;
var
  Graphics: Pointer;
  GBitmap: THANDLE;
  DC, dcMem: HDC;
  bmOld: HBITMAP;
begin
  DC:= GetDC(0);
  Result:= CreateCompatibleBitmap(DC, W, H);
  dcMem:= CreateCompatibleDC(DC);
  bmOld:= SelectObject(dcMem, Result);

  GdipCreateFromHDC(dcMem, Graphics);
  GdipCreateBitmapFromHBITMAP(Bitmap, 0, GBitmap);
  GdipDrawImageRect(Graphics, GBitmap, 0, 0, H, W);
  GdipDisposeImage(GBitmap);
  GdipDeleteGraphics(Graphics);

  SelectObject(dcMem, bmOld);
  DeleteDC(dcMem);
  ReleaseDC(0, DC);
end;

El tema del formato final en el que se guarde la imagen es otro asunto que también se puede hacer con GDIplus.

Saludos.
Responder Con Cita
 



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
¿como comprimir con delphi y zlib1.dll? JXJ Varios 2 21-07-2013 23:02:41
VCLZip. Como se usa para comprimir y descomprimir esvastiger Varios 1 22-04-2013 16:09:01
Como puedo convertir una imagen a una imagen semitransparente? antonio302050 Gráficos 0 27-03-2010 17:01:48
como comprimir una imagen jpeg kurono Varios 6 13-04-2008 04:14:03
comprimir un jpg User_baja1 Gráficos 1 08-07-2005 11:47:56


La franja horaria es GMT +2. Ahora son las 22:26:59.


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
Copyright 1996-2007 Club Delphi