Páginas (2): 1 2   
Shordi   09-03-2023, 13:10
#1
Aunque hace unas semanas or presenté los nuevos controles PicPanel y PicButton, a raíz de la colaboración con Harpo respecto al redondeo de paneles, he actualizado ambas clases para que contengan esa nueva característica. En concreto a Picpanel le he añadido la propiedad Radius, que establece el radio de las cuatro esquinas y luego una propiedad por cada una de ellas (TopLeftRadius, TopRightRadius, BottomRightRadius y BottomLeftRadius) para poder establecerlas individualmente.

El nuevo PicButton sólo dispone de Radius.

Los he probado con GTK3 y con QT5 y funcionan bien en ambos entornos. Los colores por defecto los he intentado aproximar lo más posible a los estándar y los he probado con Escritorios claros y oscuros y más o menos me funcionan bien... aunque eso me gustaría que lo probaseis en vuestras máquinas a ver qué tal quedan.

Ena demo, el aspecto del formulario test para Escritorios oscuros es éste:
[Imagen: xfz9hzO.png]

y para Escritorios Claros es éste:
[Imagen: VtFZBgq.png]

Le he limitado a ambos controles la cantidad de Radio que se puede dar a las esquinas, que antes se desmadraba. Ahora es la mitad del borde más corto del control, con lo se obtienen óvalos o círculos, pero sin desmadrarse demasiado.

No lo cuelgo aquí que como tiene imágenes incrustadas pesa demasiado para el foro. Lo podéis descargar de:

https://gitlab.com/shordi/PicPanel

Saludos

No podemos regresar
tincho   09-03-2023, 15:15
#2
En Manjaro se ve así:
[Imagen: dod1Cvr.png][Imagen: sWBGpmZ.png]

1 Saludo.
jguardon   09-03-2023, 16:31
#3
Eso tiene muy buena pinta. Lo único es que no creo que lo vaya a utilizar, soy bastante tradicional para las GUI's.

Gracias por compartir!

Saludos

Por favor, usa el corrector ortográfico antes de pulsar el botón 'Enviar'
tincho   09-03-2023, 17:28
#4
Estoy haciendo un editor de texto usando un PicPanel modificado, va quedando así.

[Imagen: 3OAc5a8.png]
[Imagen: UR6e8fX.png]
Última modificación: 09-03-2023, 17:30 por tincho.

1 Saludo.
Shordi   09-03-2023, 19:05
#5
Ya nos lo enseñarás!! Big Grin Big Grin Big Grin

No podemos regresar
Harpo   09-03-2023, 19:41
#6
Tiene buena pinta, gran trabajo.
Solo una recomendación si quiere optimizar código, en vez de asignar el DrawingArea a la propiedad _Container asignar el Panel interno.

Código:
'Me._Container = $hPicPanel
Me._Container = $Content

Con esto UserContainer asigna las propiedades de "contenedor" al panel, no sería necesario hacer Reparent de los hijos ni definir propiedades puente como Arrangement, Padding, etc.

Un saludo, Harpo.
tincho   09-03-2023, 21:46
#7
(09-03-2023, 19:05)Shordi escribió: Ya nos lo enseñarás!! Big Grin Big Grin Big Grin

Hace un tiempo hice un editor rudimentario (que nunca termine) con el control TextEditor y ayer empece a aislar todo lo que resulte útil en un formulario independiente. No se en que derivara todo esto, probablemente en nada. Big Grin

1 Saludo.
Shordi   09-03-2023, 23:30
#8
Cita:Con esto UserContainer asigna las propiedades de "contenedor" al panel, no sería necesario hacer Reparent de los hijos ni definir propiedades puente como Arrangement, Padding, etc.

Lo estuve pensando, pero luego no me decidí por miedo a liarla... Gracias por el tip.

Saludos

No podemos regresar
Shell   30-03-2023, 14:34
#9
No es que sea en este proyecto en concreto, pero suele pasar cuando se usan controles diseñados por el usuario que
el editor de Gambas suele mostrar el mensaje que no ha encontrado el control.

Lo que hice fue compilar, pero seguía mostrándose el mensaje. Luego le di a recargar en el icono que veis
con las dos flechas y el mensaje desapareció.

[Imagen: 7FBgcdA.png]

Si que queda un poco desplazado, no centrado, pero supongo que eso debe ser cuestión de alguna propiedad, que solo es un test.
por lo demás muy chulo.

Saludos

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
tincho   19-04-2023, 10:10
#10
Shordi
Estoy usando PicPanel n un proyecto, pero lo modifique un poco para usar arc en vez de curve ya que en los arcos (y en los chaflanes) se produce una aberración debido a los pixeles de la pantalla supongo.
Este es el código:

Código:
Public Sub PicPanel_Draw()

  Dim iColor, iMargin As Integer
  Dim iFlag As Integer = Style.StateOf(Me)
  Dim n, i As Integer
  Dim p As Integer
  Dim ax As Variant[] = [[Rad(0), Rad(270)], [Rad(270), Rad(90)], [Rad(180), Rad(90)], [Rad(90), Rad(90)]]
  Dim vx As Integer[][] = [[0, 0], [$hPicPanel.w, 0], [$hPicPanel.w, $hPicPanel.h], [0, $hPicPanel.h], [0, 0]]

  'Enabled / Disable
  If iFlag And Style.Disabled Then
    iColor = Color.Merge(Me.Background, $iBorderColor, 0.75)
  Else
    iColor = $iBorderColor
  Endif

  Paint.Begin($hPicPanel)
  Paint.MoveTo($Radius[0], $Radius[0])

  Paint.Arc($Radius[0], $Radius[0], $Radius[0], Rad(180), Rad(90), False) ' r0
  Paint.Arc($Radius[1], $hPicPanel.h - $Radius[1], $Radius[1], Rad(90), Rad(90), False) ' r1
  Paint.Arc($hPicPanel.w - $Radius[2], $hPicPanel.h - $Radius[2], $Radius[2], 0, Rad(90), False) ' r2
  Paint.Arc($hPicPanel.w - $Radius[3], $Radius[3], $Radius[3], Rad(270), Rad(90), False)  ' r3

  Paint.MoveTo($Radius[0], 0)
  Paint.LineTo($hPicPanel.w - $Radius[1], 0)

  Paint.MoveTo($hPicPanel.w, $Radius[1])
  Paint.LineTo($hPicPanel.w, $hPicPanel.h - $Radius[2])

  Paint.MoveTo($hPicPanel.w - $Radius[2], $hPicPanel.h)
  Paint.LineTo($Radius[3], $hPicPanel.h)

  Paint.MoveTo(0, $hPicPanel.h - $Radius[3])
  Paint.LineTo(0, $Radius[0])

  Paint.LineJoin = 1
  Paint.Brush = Paint.Color($iBorderColor)

  Paint.stroke(True)
  Paint.End

  'Content Adjust to bigger Radius
  For Each n In $Radius
    i = Max(n, i)
  Next
  iMargin = Int(i / 3)
  With $Content
    .X = iMargin
    .Y = iMargin
    .H = $hPicPanel.h - (iMargin * 2)
    .W = $hPicPanel.w - (iMargin * 2)
  End With
End

[Imagen: XKIzD9Q.png]
Última modificación: 19-04-2023, 10:12 por tincho.

1 Saludo.
Páginas (2): 1 2   
  
Usuarios navegando en este tema: 1 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.