Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 11-06-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
Vamos a ir por partes, o mejor por trozos

Primero lo que tu pides:
Código Delphi [-]
procedure DibujarTrozo(Filename: string; Count, Index: Integer; Dest: TCanvas);
var
  Ancho: Integer;
begin
  with TBitmap.Create do
  try
    LoadFromFile(Filename);
    Ancho:= Width div Count;
    Dest.CopyRect(Rect(0,0,Ancho,Height), Canvas,
                  Rect(Ancho*Index,0,Ancho*(Index+1),Height));
  finally
    Free;
  end;
end;

Para utilizar esa funcion, pasale como parametro la ruta del bmp con los diferentes dibujos uno a continuacion del otro en horizontal, pasale tambien el numero de elementos que contine y el indice del que quieres dibujar teniendo en cuenta que el primero sera el 0 y el ultimo Count-1. Por ejemplo, si el bitmap tiene 10 elementos:

Código Delphi [-]
  // Dibujamos el trozo sobre el propio formulario
  DibujarTrozo('d:\1.bmp',10,0,Canvas);
  // Dibujamos el Trozo sobre un TPaintBox
  DibujarTrozo('d:\1.bmp',10,9,PaintBox1.Canvas);
  // Dibujamos el Trozo sobre un TImage
  DibujarTrozo('d:\1.bmp',10,5,Image1.Canvas);

Ahora te digo lo que haria yo, utilizaria un TImageList y en el OnCreate del formulario utilizaria esto para cargar las imagenes:

Código Delphi [-]
var
  Bitmap: TBitmap;
begin
  Bitmap:= TBitmap.Create;
  try   
    Bitmap.LoadFromFile('d:\1.bmp');
    ImageList1.Width:= Bitmap.Width div 10; // 10 Elementos
    ImageList1.Height:= Bitmap.Height;
    ImageList1.Masked:= FALSE;
    ImageList1.Add(Bitmap,nil);
  finally
    Bitmap.Free;
  end;
end;

Y luego cada vez que lo quisiera dibujar utilizaria esto otro:
Código Delphi [-]
  // Esto por ejemplo dibuja el trozo numero 6
  ImageList1.Draw(Canvas,0,0,5);
  // Y esto por dibuja el trozo numero 10 en un TPaintbox
  ImageList1.Draw(PaintBox1.Canvas,0,0,9);

Tu decides ...

Última edición por seoane fecha: 11-06-2006 a las 03:42:29.
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
manejar directorios XxEdwinxX Varios 1 20-12-2005 22:26:28
como manejar el datapicker jas010 Conexión con bases de datos 7 04-04-2005 21:32:40
Manejar subtitulos... SGOFx Varios 6 05-02-2005 20:09:16
Manejar dirección API cardomjar Varios 7 08-12-2004 12:13:59
Manejar Componetes sergio_015 OOP 12 25-11-2004 11:01:47


La franja horaria es GMT +2. Ahora son las 08:06:41.


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