Ver Mensaje Individual
  #20  
Antiguo 09-04-2008
fasthorse fasthorse is offline
Miembro
 
Registrado: ene 2007
Posts: 90
Reputación: 18
fasthorse Va por buen camino
Hola, si, te has explicado muy bien, pero sigue sin salirme, llego a dibujar el rectángulo, pero no consigo moverlo ni cambiarlo de tamaño, ni hacer nada con él. Te pongo el código de lo que llevo, a ver si le vemos algo, le puse la variable bool seleccionar como me indicaste:

//defino la variable como global
bool seleccionar;

void __fastcall TForm1::ToolButton5Click(TObject *Sender) //seleccionar
//un trozo d imagen
{
seleccionar=true;
TRect SelectRect(100,100,200,200);
Imagen->Canvas->Brush->Style=bsClear;
Imagen->Canvas->Pen->Style=psDot;
Imagen->Canvas->Rectangle(SelectRect);

}

void InvalidateFrameRect(TControl *Control, TCanvas *Canvas, TRect Rect)
{
if(seleccionar){
InvalidateRect(Canvas->Handle, &Rect, true);
Control->Perform(WM_PAINT, (int)Canvas->Handle, 0);
}
}
//----------------------------------------------------------------------------
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if(seleccionar){
AccionPoint = TPoint(X+Imagen->Left,Y+Imagen->Top);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
if(seleccionar){
if(AccionPoint.x!=-1 && AccionPoint.y!= -1 && Imagen->Picture->Graphic) {
InvalidateFrameRect(this, Canvas, SelectRect);
if(X<0) X=0; if(X>Imagen->Width) X = Imagen->Width;
if(Y<0) Y=0; if(Y>Imagen->Height) Y = Imagen->Height;
X += Imagen->Left;
Y += Imagen->Top;
SelectRect = TRect(AccionPoint.x, AccionPoint.y, X, Y);
SelectRect = TRect(min(SelectRect.Left, SelectRect.Right), min(SelectRect.Top, SelectRect.Bottom),
max(SelectRect.Left, SelectRect.Right), max(SelectRect.Top, SelectRect.Bottom));
Canvas->Rectangle(SelectRect);
}
}
}
//------------------------------------------------------------------------------------------------
void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if(seleccionar){
AccionPoint = TPoint(-1,-1);
}
}

He probado escribiendo algún que otro ShowMessage... y no se mete en ninguno de los métodos del ratón....

¿qué es lo q me falta?

saludos.
Responder Con Cita