Page 1 of 1

RoundRect()

Posted: Tue Feb 27, 2007 12:00 pm
by Carles
Hola,

Alguien sabe como rellenar de un color un rectangulo redondeado. He probado con el brush pero me rellena el rectangulo completo

Code: Select all

   ::GetDc()

   hPen := CreatePen( 0,  2, CLR_BLACK )
   oBrush := TBrush():New( ,  CLR_RED )
   hOldPen := SelectObject( ::hDc, hPen )
   hOldBrush := SelectObject( ::hDC, oBrush:hBrush )

   Roundrect( ::hDC, 0, 0, ::nWidth, ::nHeight,  25, 25 )

   SelectObject( ::hDc, hOldPen )
   SelectObject( ::hDC, hOldBrush )

   DeleteObject( hPen )
   oBrush:End()

   ::ReleaseDc()
Gracias

Posted: Tue Feb 27, 2007 12:24 pm
by JoseLuis
Yo lo hago así:

Code: Select all

    CajaRound(co+17,                            ;
              li+0.5,                            ;
              co+20,        ;
              li+1.5 -0.1,50,50,oPrn,oPen1,oBrush1)
 Function CAJAROUND(nArriba,nIzq,nAbajo,nDerecha,a,b,oPrn,oPen,oBrush)
 LOCAL hOldPen, xCor := {} , yCor := {}
 local hOldBrush
 // Pasamos coordenadas de cms a pixel
 xCor := oPrn:Cmtr2Pix(nArriba,nIzq)
 yCor := oPrn:Cmtr2Pix(nAbajo,nDerecha)
 // Guardamos el Lapiz y la brocha que teniamos
 hOldPen   := SelectObject( oPrn:hDcOut, oPen:hPen )
 hOldBrush := SelectObject( oPrn:hDcOut, oBrush:hBrush )
 //Dibujamos el rectangulo redondeado
 roundrect(oPrn:hdcOut,xCor[1],xCor[2],yCor[1],yCor[2],a,b)
 // y  seleccionamos el que habiamos guardado
 selectObject( oPrn:hDcOut, hOldPen )
 selectObject( oPrn:hDcOut, hOldBrush )
 RETURN NIL
Espero te sirva

Saludos

Jose Luis

Posted: Tue Feb 27, 2007 12:27 pm
by Antonio Linares
Carles,

Prueba a usar FloodFill() ó su equivalente en 32 bits ExtFloodFill()

Posted: Tue Feb 27, 2007 1:47 pm
by Carles
Voy a probar. Gracias