• Sábado 14 de Diciembre de 2024, 14:33

Autor Tema:  Cortar una imagen stretch  (Leído 1474 veces)

gonzalipto

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
Cortar una imagen stretch
« en: Martes 21 de Abril de 2009, 16:48 »
0
Hola gente bueno les escribo porq estoy intentando cortar una imagen y tengo un pequeño problema..

La imagen que uso esta en un TImage con propiedad Stretch=true.

Yo uso un codigo para que cuando hago la seleccion me dibuje un rectangulo en la pantalla y que cuando termina la seleccion recorte usando las coordenadas del rectangulo q se dibujo.

El problema es que cuando uso la propiedad strectch en true el rectangulo que recorta en realidad no se corresponde con lo que seleccione.. Supongo que se debe a que la funcion Canvas::CopyRect al usar un objeto TBitmap al que se le asigna el graphic de un Tpicture utiliza las medidas del TPicture y no del TCanvas. Porque cuando uso una imagen q no esta estirada anda perfecto..

Alguna idea??

Les dejo el codigo q use.

Image2 es la imagen fuente

y juntas es la imagen en donde aparece el rectangulo q quiero seleccionar



Código: C++
  1.  
  2. void __fastcall TForm1::Image2MouseMove(TObject *Sender, TShiftState Shift,
  3.       int X, int Y)
  4. {
  5. if (Dragging)
  6.   {
  7.     Canvas->DrawFocusRect(DrawRect);
  8.     DrawRect.right = X;
  9.     DrawRect.bottom = Y;
  10.     Canvas->DrawFocusRect(DrawRect);
  11.   }
  12.  
  13. }
  14. //---------------------------------------------------------------------------
  15.  
  16. void __fastcall TForm1::Image2MouseDown(TObject *Sender,
  17.       TMouseButton Button, TShiftState Shift, int X, int Y)
  18. {
  19. Dragging = true;
  20.   DrawRect.left = X;
  21.   DrawRect.top = Y;
  22.   DrawRect.right = X;
  23.   DrawRect.bottom = Y;
  24.   Canvas->DrawFocusRect(DrawRect);
  25.        
  26. }
  27. //---------------------------------------------------------------------------
  28.  
  29. void __fastcall TForm1::Image2MouseUp(TObject *Sender, TMouseButton Button,
  30.       TShiftState Shift, int X, int Y)
  31. {
  32. if (Dragging) {
  33.     Dragging = false;
  34.     Canvas->DrawFocusRect(DrawRect);
  35.     Graphics::TBitmap* bmp = new Graphics::TBitmap();
  36.     bmp->Height = Image2->Height;
  37.     bmp->Width  = Image2->Width;
  38.     bmp->Assign(Image2->Picture->Graphic);
  39.    juntas->Canvas->CopyRect(Rect(0, 0, juntas->Width, juntas->Height), bmp->Canvas, DrawRect);
  40.  
  41.   }
  42.  
  43. }
  44.  
  45.  

Desde ya gracias