| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Krames Cdt

Registrado: 27 Abr 2006Mensajes: 19
|
Publicado: Jue 07 Feb, 2008 4:15 am Asunto: TImage no se pinta bien!!! |
|
|
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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Jue 07 Feb, 2008 4:54 am Asunto: |
|
|
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 |
|
 |
Krames Cdt

Registrado: 27 Abr 2006Mensajes: 19
|
Publicado: Jue 07 Feb, 2008 2:45 pm Asunto: |
|
|
Muchisimas gracias _Leo, eres infinitamente sabio, me has sacado de un embrollo enorme. Otra vez muchas gracias  _________________ Dios te ama. |
|
| Volver arriba |
|
 |
|