Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

TImage no se pinta bien!!!

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: TImage no se pinta bien!!! Responder citando

Buenas, tengo el siguiente problema:
En un formulario creo un TImage en tiempo de ejecucion. La idea es que el image cambie de tamaño cuando el form es redimencionado y esto ya lo consegui. El problema es que el image no lo quiero para mostrar una imagen sino para dibujar sobre el, entonces cuando quito el picture y hago un dibujo no funciona, es decir, pinta todo bien, pero al redimensionar el form la parte pintada del image no se redimensiona. aqui va el codigo:

El .h
Código:



class TForm1 : public TForm
{
__published:   // IDE-managed Components
        void __fastcall FormResize(TObject *Sender);
private:   // User declarations
public:      // User declarations
        __fastcall TForm1(TComponent* Owner);
        TImage *img;
};




El .cpp
Código:

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  img = new TImage (this);
  img->Parent = this;
  img->Top = 10;
  img->Left = 10;
  img->Width = this->Width - 40;
  img->Height = this->Height - 50;
  img->Picture->LoadFromFile("foto.bmp");
}


void __fastcall TForm1::FormResize(TObject *Sender)
{
  img->Width = this->Width - 40;
  img->Height = this->Height - 50;
/*  img->Canvas->Pen->Color = clBlack;
  img->Canvas->Brush->Color = clGray;
  img->Canvas->Rectangle(img->ClientRect);*/
}




Si lo dejo como está funciona, pero si le comento la linea de la foto y descomento las del dibujo no se pinta bien.
De antemano gracias por la ayuda que me puedan prestar.
_________________
Dios te ama.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

El TImage lo que hace es crear un bitmap interno del tamaño que le demos inicialmente, y permanecerá siendo del mismo tamaño a menos que destruyamos el bitmap interno (entonces volverá a crear uno nuevo con las dimensiones que tenga en ese momento el TImage) o hasta que lo redimensionemos manualmente:
Código:
void __fastcall TForm1::FormResize(TObject *Sender)
{
  img->Width = this->Width - 40;
  img->Height = this->Height - 50;

    // Cambiamos las dimensiones del bitmap interno del TImage
    img->Picture->Bitmap->Width = img->Width;
    img->Picture->Bitmap->Height = img->Height;

  img->Canvas->Pen->Color = clBlack;
  img->Canvas->Brush->Color = clGray;
  img->Canvas->Rectangle(img->ClientRect);
}


(Una forma sencilla de evitar el parpadeo es que añadas: "DoubleBuffered=true;" en el constructor)
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Muchisimas gracias _Leo, eres infinitamente sabio, me has sacado de un embrollo enorme. Otra vez muchas gracias Wink Wink
_________________
Dios te ama.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.