Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-08-2025
CarlosCorp CarlosCorp is offline
Miembro
 
Registrado: ago 2015
Posts: 11
Poder: 0
CarlosCorp Va por buen camino
Insertar una imagen en un TShape

Buenas tardes amigos. Mi consulta es si existe alguna forma de asignar una imagen a un TShape (como se hace con un TImage). En vez de darle un color me gustaría ponerle una imagen como si fuera una textura.
Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 14-08-2025
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Creo que no, pero puedes usar una imagen igualmente, si lo que pretendes es ponerlo de fondo.
Responder Con Cita
  #3  
Antiguo 14-08-2025
CarlosCorp CarlosCorp is offline
Miembro
 
Registrado: ago 2015
Posts: 11
Poder: 0
CarlosCorp Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Creo que no, pero puedes usar una imagen igualmente, si lo que pretendes es ponerlo de fondo.
Gracias por responder. Lo que pretendo es usar un TShape como un objeto que pueda mover con el mouse dentro del form. El programa tendrá muchos objetos (de 1 a 600 más o menos) que se podrán manipular con el mouse. Quizás usar esa cantidad de TImage no sea muy conveniente 🤔
Responder Con Cita
  #4  
Antiguo 14-08-2025
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Prueba algo así, a ver si te sirve:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  DibujarDegradado(TImage1.Canvas, TImage1.ClientRect, clYellow, clRed);
end;

procedure TForm1.DibujarDegradado(ACanvas: TCanvas; ARect: TRect; Color1, Color2: TColor);
var
  i, R1, G1, B1, R2, G2, B2: Integer;
  R, G, B: Integer;
  LineRect: TRect;
begin
  // Descomponer colores
  R1 := GetRValue(ColorToRGB(Color1));
  G1 := GetGValue(ColorToRGB(Color1));
  B1 := GetBValue(ColorToRGB(Color1));

  R2 := GetRValue(ColorToRGB(Color2));
  G2 := GetGValue(ColorToRGB(Color2));
  B2 := GetBValue(ColorToRGB(Color2));

  for i := 0 to ARect.Bottom - ARect.Top do
  begin
    // Interpolación lineal de colores
    R := R1 + MulDiv(R2 - R1, i, ARect.Bottom - ARect.Top);
    G := G1 + MulDiv(G2 - G1, i, ARect.Bottom - ARect.Top);
    B := B1 + MulDiv(B2 - B1, i, ARect.Bottom - ARect.Top);

    ACanvas.Brush.Color := RGB(R, G, B);
    LineRect := Rect(ARect.Left, ARect.Top + i, ARect.Right, ARect.Top + i + 1);
    ACanvas.FillRect(LineRect);
  end;
end;
Pon un TImage en el formulario, ajusta su align o tamaño para que ocupe el área que quieras y llama a DibujarDegradado(...) con los colores que quieras.
Responder Con Cita
  #5  
Antiguo 14-08-2025
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
La otra opción usando un .bmp como textura sería algo así:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  Shape1.Brush.Style := bsClear; // No lo usaremos, pero por seguridad
  Shape1.Pen.Color := clBlack;
  
  // Cargar la textura desde un fichero BMP
  Shape1.Brush.Bitmap := TBitmap.Create;
  Shape1.Brush.Bitmap.LoadFromFile('C:\mi_textura.bmp');
end;
Brush.Bitmap solo soporta bmp en Delphi 6 (que es con lo que lo he probado), si quieres png o jpg tendrás que usar TPngImage o TJPEGImage y dibujarlo manualmente en un TImage o TPaintBox.
El bitmap se repetirá como un mosaico para rellenar todo el área.
Responder Con Cita
  #6  
Antiguo 14-08-2025
CarlosCorp CarlosCorp is offline
Miembro
 
Registrado: ago 2015
Posts: 11
Poder: 0
CarlosCorp Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
La otra opción usando un .bmp como textura sería algo así:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  Shape1.Brush.Style := bsClear; // No lo usaremos, pero por seguridad
  Shape1.Pen.Color := clBlack;
  
  // Cargar la textura desde un fichero BMP
  Shape1.Brush.Bitmap := TBitmap.Create;
  Shape1.Brush.Bitmap.LoadFromFile('C:\mi_textura.bmp');
end;
Brush.Bitmap solo soporta bmp en Delphi 6 (que es con lo que lo he probado), si quieres png o jpg tendrás que usar TPngImage o TJPEGImage y dibujarlo manualmente en un TImage o TPaintBox.
El bitmap se repetirá como un mosaico para rellenar todo el área.
Gracias por las ideas. Las probaré para ver cómo queda 👍
Responder Con Cita
  #7  
Antiguo 15-08-2025
CarlosCorp CarlosCorp is offline
Miembro
 
Registrado: ago 2015
Posts: 11
Poder: 0
CarlosCorp Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
La otra opción usando un .bmp como textura sería algo así:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  Shape1.Brush.Style := bsClear; // No lo usaremos, pero por seguridad
  Shape1.Pen.Color := clBlack;
  
  // Cargar la textura desde un fichero BMP
  Shape1.Brush.Bitmap := TBitmap.Create;
  Shape1.Brush.Bitmap.LoadFromFile('C:\mi_textura.bmp');
end;
Brush.Bitmap solo soporta bmp en Delphi 6 (que es con lo que lo he probado), si quieres png o jpg tendrás que usar TPngImage o TJPEGImage y dibujarlo manualmente en un TImage o TPaintBox.
El bitmap se repetirá como un mosaico para rellenar todo el área.
Ésta opción es lo que quería, pero no se si se podrá hacer que el bmp se adapte al tamaño del TShape. Algo así como la propiedad Stretch del TImage.
De todos modos gracias por la ayuda.
Responder Con Cita
  #8  
Antiguo 15-08-2025
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Puedes hacerlo tú mismo, una vez cargado el bitmap tomas sus medidas ancho y alto, y le asignas esas mismas medidas al shape.
Responder Con Cita
  #9  
Antiguo 15-08-2025
CarlosCorp CarlosCorp is offline
Miembro
 
Registrado: ago 2015
Posts: 11
Poder: 0
CarlosCorp Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Puedes hacerlo tú mismo, una vez cargado el bitmap tomas sus medidas ancho y alto, y le asignas esas mismas medidas al shape.
Tienes razón, pero sería al revés, el bitmap debe tener las medidas del TShape.
Lo probaré. Muchas gracias por la ayuda. 😁👍
Responder Con Cita
Respuesta



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
Insertar una imagen a la BD kainchu3102 SQL 4 18-07-2021 05:05:56
insertar una imagen en un TFDTable cl2raul FireMonkey 2 01-11-2019 15:53:43
¿Cómo insertar una imagen? kbaby Varios 6 19-02-2008 15:50:22
Insertar una imagen en un formulario Luli Gráficos 2 07-10-2004 08:19:33
Insertar una imagen en una DB de Access cone220 Gráficos 0 05-02-2004 13:24:32


La franja horaria es GMT +2. Ahora son las 18:33:09.


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