Como Crear borde ovalado en ventana

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
Avatar de Usuario
yasmany
Hacker del Foro
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

Como Crear borde ovalado en ventana

Mensaje por yasmany »

Hola todos como algunos sabrán estoy desarrollando un pequeño software, pero resulta que quiero cambiar la apariencia de los bordes de rectangulados a semiOvalados.
¿Como lograría aquello?

Esta es la interfaz.

Imagen

Imagen
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Como Crear borde ovalado en ventana

Mensaje por Dany »

Hola.

Código: Seleccionar todo

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$GUI_Main = GUICreate("My GUI") ; will create a dialog box that when displayed is centered
GUISetState(@SW_SHOW)

_GuiRoundCorners($GUI_Main, 100, 0, 40, 40, 0)

While 1
    $msg = GUIGetMsg()

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd


; Round corners function
; Last optional parameter $BotCrnrs - Default 1 (True) shows bottom rounded corners
;                                   - 0 (False) shows square bottom corners
Func _GuiRoundCorners($h_win, $i_x1, $i_y1, $i_x3, $i_y3, $BotCrnrs = True); thanks gafrost
    Local $XS_pos, $XS_ret, $XS_ret2
    $XS_pos = WinGetPos($h_win)
    If Not $BotCrnrs Then $ret2 = DllCall("gdi32.dll", "long", "CreateRectRgn", "long", _
                $i_x1, "long", $XS_pos[3]-$i_y3, "long", $XS_pos[2]-1, "long", $XS_pos[3])
    $XS_ret = DllCall("gdi32.dll",  "long", "CreateRoundRectRgn", _
                                    "long", $i_x1, _
                                    "long", $i_y1, _
                                    "long", $XS_pos[2], _
                                    "long", $XS_pos[3], _
                                    "long", $i_x3, _
                                    "long", $i_y3)
    If Not $BotCrnrs Then DllCall("gdi32.dll", "long", "CombineRgn", "long", $XS_ret[0], "long", $XS_ret[0], _
                                                             "long", $ret2[0], "int", 2)
    If $XS_ret[0] Then
        $XS_ret = DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $h_win, "long", $XS_ret[0], "int", 1)
    EndIf
EndFunc   ;==>_GuiRoundCorners
Saludos
  • ............................................Imagen
    ......................................Imagen
Avatar de Usuario
yasmany
Hacker del Foro
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

Re: Como Crear borde ovalado en ventana

Mensaje por yasmany »

Muchas Gracias Dany. habrá como hacer para todas las esquinas.
Sucede que este code recorta la ventana hacia la derecha :smt009
Existirá algo que solo moldee las esquinas?
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Como Crear borde ovalado en ventana

Mensaje por Dany »

Con ese mismo código se puede revisarlo bien.


saludos
  • ............................................Imagen
    ......................................Imagen
Avatar de Usuario
yasmany
Hacker del Foro
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

Re: Como Crear borde ovalado en ventana

Mensaje por yasmany »

Disculpa por la torpeza :smt003, antes que comentes iba a decir que el código funciona muy bien, gracias. :smt023

Imagen

Saludos... :smt024
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
Responder