Mostrando las entradas con la etiqueta Clase Paint. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Clase Paint. Mostrar todas las entradas

jueves, 22 de octubre de 2020

¿Como usar una imagen svg en Gambas3?

 

El manejo de imágenes svg no parece fácil en Gambas3 pero bueno aquí un ejemplo no explicado (por ahora). Este ejemplo te dará una idea de por donde empezar y después hacer tus propios aprendizajes.

 

' Gambas class file

Private svg1 As SvgImage
Private ImagenX As Image
Private RutaImagen As String


Public Sub Form_Open()

  RutaImagen = "distro/archlinux.svg"

End

Public Sub DrawingArea1_Draw()

  svg1 = SvgImage.Load(RutaImagen)

  DrawingArea1.Width = svg1.Width
  DrawingArea1.Height = svg1.Height

  ImagenX = New Image(svg1.Width, svg1.Height, Color.Transparent)
  Paint.Begin(ImagenX)
  svg1.Paint()
  Paint.End

  Paint.DrawImage(ImagenX, 0, 0)

End

Public Sub distro_Click()

  RutaImagen = Last.tag
  DrawingArea1.Refresh

End


El ejemplo lo puedes descargar de la Granja de Gambas o también de aquí.

domingo, 10 de septiembre de 2017

Paint Clip


Algo que se esta poniendo de moda son las imágenes recortadas en forma de círculo. Bueno aquí les dejo un código algo crudo para que practiquen.





El ejemplo esta en la granja de gambas.

viernes, 4 de agosto de 2017

Paint Rotate


La clase Paint es potente y difícil si se quiere, por eso hay que hacer practicas de pequeños ejercicios con una función determinada para ir comprendiendo el funcionamiento de Paint.
Les dejo un ejemplo de como usar el método Rotate de la clase paint.
Espero les sirva para sus practicas y mejorar así su conocimiento sobre la clase.



' gambas class file

'by postapase 04 agosto 2017

Private Const IMAGE_NAME As String = "clovis.jpg"
Private Angulo As Float

Public Sub Form_Open()

End

Public Sub DrawingArea1_Draw()

Dim X, Y, W, H As Float
Dim hBrush As PaintBrush
Dim hImage As Image

hImage = Image.Load(IMAGE_NAME)

X = 0
Y = 0
W = 200
H = 200

hBrush = Paint.Image(hImage)
Paint.Brush = hBrush
Paint.Rectangle(X, Y, W, H)

Paint.Translate(100, 100)
Paint.Rotate(Angulo)
Paint.Translate(-100, - 100)

Paint.Fill

End

Public Sub Slider1_Change()

Angulo = Rad(Slider1.Value)
Print "--> " & Rad(Slider1.Value)
DrawingArea1.Refresh()

End

Public Sub Slider2_Change()

Angulo = Rad(- Slider2.Value)
Print "--> " & Rad(- Slider2.Value)
DrawingArea1.Refresh()

End

Public Sub Button1_Click()

Angulo = -1.5707963267949
DrawingArea1.Refresh()

End

Public Sub Button2_Click()

Angulo = -3.14159265358979
DrawingArea1.Refresh()

End

Public Sub Button3_Click()

Angulo = -4.71238898038469
DrawingArea1.Refresh()

End

Public Sub Button4_Click()

Angulo = -6.28318530717959
DrawingArea1.Refresh()

End


El código fuente esta en la Granja Gambas

lunes, 3 de julio de 2017

Uso de spriters en Gambas




Aprendiendo a usar spriters en gambas, empiezo con algo simple.

' gambas class file

' Como usar una imagen sprite en gambas by postapase (3 Julio 2017)

Private Cantidad_Sprites As New Picture[]

Public Sub Form_Open()

Me.Title = "Sprite"

End

Public Sub SepararImagenes(path As String, filas As Integer, columnas As Integer)
'subrutina extraida y modificada del ejemplo de Julio 1945

Dim i As Image
Dim fila As Integer
Dim columna As Integer
Dim imagenAncho As Integer
Dim imagenLargo As Integer
Dim fichero As Picture
Dim contador As Integer

i = Image.Load(path)

Cantidad_Sprites = New Picture[]

imagenAncho = i.w / columnas
imagenlargo = i.h / filas

For fila = 1 To filas
For columna = 0 To columnas

fichero = New Picture(imagenAncho, imagenLargo, Color.Transparent)
Paint.Begin(fichero)


'esta línea lo que hace es recortar la imagen i,
 y ese recorte sera la nueva imagen.
Paint.DrawImage(i, 0, 0, imagenAncho, imagenLargo, 1, Rect((columna - 1) * imagenAncho, (fila - 1) * imagenLargo, imagenancho, imagenlargo))
Paint.Stroke()
Paint.Fill

Paint.End()
fichero.Save("/tmp/dibujo" & Str$(contador) & ".png")
Cantidad_Sprites.Add(fichero)
contador += 1

Next
Next

End

Private Sub Accion()

Dim a As Integer

For a = 0 To Cantidad_Sprites.Max
PictureBox1.Picture = Cantidad_Sprites[a]
Wait 0.09
Next

PictureBox1.Picture = Null
Wait 0.1

End

Public Sub Button1_Click()

SepararImagenes("explosion.png", 1, 12)
Accion()

End

El ejemplo esta disponible en la granja de gambas.

Página para descargar spriters y hacer nuestras experiencias en gambas.
https://www.spriters-resource.com/

lunes, 25 de abril de 2016

Evento Arrangement y Función Min





' gambas class file

Public Ancho As Integer
Public Alto As Integer

Public Sub DrawingArea1_Arrange()

Ancho = DrawingArea1.Width
Alto = DrawingArea1.Height
Print "Ancho=" & Ancho
Print "Alto=" & Alto

DrawingArea1_Draw()

End

Public Sub Form_Open()



End

Public Sub DrawingArea1_Draw()

dibuja()

End

Public Sub dibuja()
DrawingArea1.Clear

Paint.Begin(DrawingArea1)
Paint.LineWidth = 2
Paint.Brush = Paint.Color(Color.Black)
Paint.Arc(Ancho / 2, Alto / 2, Min(Ancho / 2, Alto / 2))
Paint.Stroke
Paint.End
End


Ejemplo Triángulo


DrawingArea.Cache=true

Public Sub Form_Open()
Dim puntos As Float[] = [0, 0, -200, 200, 200, 200]

Paint.Begin(DrawingArea1) ' Comenzar los parámetros del dibujo y
'donde se quiere dibujar entre paréntesis

Paint.Translate(DrawingArea1.Width / 2, DrawingArea1.Height / 2) 'punto central del drawingArea1
Paint.LineWidth = 2 'grosor del trazo
Paint.Brush = Paint.Color(Color.Blue) 'color del trazo
Paint.Polygon(puntos) 'polígono en este caso un triángulo
Paint.Stroke ' realizar el trazado y visualizar el dibujo
Paint.End 'fin de parámetros del dibujo

End


Código Fuente

lunes, 5 de octubre de 2015

Clase Mancha




FMain:

' gambas class file

Private circulo As Mancha


Public Sub Form_Open()
Me.Center
SliderBox1.MaxValue = 1000
SliderBox1.MinValue = 1
SliderBox1.Value = 500
End

Public Sub Button1_Click()
Timer1.Start
End

Public Sub Timer1_Timer()
circulo = New Mancha(DrawingArea1)
Print Timer1.Delay
End

Public Sub Button2_Click()
Timer1.Stop
End

Public Sub Button3_Click()
DrawingArea1.Clear
End

Public Sub SliderBox1_Change()
Timer1.Delay = SliderBox1.Value
End


Clase Mancha:

' gambas class file

Property pantalla As DrawingArea
Private $pantalla As DrawingArea


Public Sub _new(device As DrawingArea)
$pantalla = device
Crear()
End

Private Function pantalla_Read() As DrawingArea
Return $pantalla
End

Private Sub pantalla_Write(Value As DrawingArea)
$pantalla = Value
End

Public Sub Crear()
Dim x, y, radio, pintura As Integer
Dim EsteColor As Integer

pintura = Rand(1, 5)
Select Case pintura
Case 1
EsteColor = Color.Red
Case 2
EsteColor = Color.Black
Case 3
EsteColor = Color.Blue
Case 4
EsteColor = Color.Green
Case 5
End Select
x = Rand(1, $pantalla.Width)
y = Rand(1, $pantalla.Height)
radio = Rand(1, 50)
' Print "X=" & x & ",Y=" & y & ",Radio=" & radio

Paint.Begin($pantalla)
Paint.LineWidth = 1
Paint.Background = EsteColor
Paint.Arc(x, y, radio)
Paint.Stroke
Paint.End

End


Código fuente: virus-0.0.1.tar.gz


sábado, 3 de octubre de 2015

Ejemplo Texto (Paint)



DrawingArea1.Cached=true


' gambas class file

' by postapase

Public Sub Form_Open()

Me.Center
Me.Title = "Ejemplo Texto"

Paint.Begin(DrawingArea1)
Paint.Font.Name = "Ubuntu"
Paint.Font.Size = 30
Paint.Font.Bold = True
Paint.Background = Color.Red
Paint.MoveTo(25, DrawingArea1.Height / 2)
Paint.Text("by postapase")
Paint.Fill
Paint.End

End





Ejemplo Cuadrado


DrawingArea1.Cached=true



' gambas class file

' by postapase

Public Sub Form_Open()
Dim Lado As Integer = 100

Me.Center
Me.Title = "Ejemplo Cuadrado"

Paint.Begin(DrawingArea1)
Paint.LineWidth = 1
Paint.Rectangle(DrawingArea1.Width / 2 - (Lado / 2), DrawingArea1.Height / 2 - (Lado / 2), Lado, Lado)
Paint.Stroke
Paint.End

End




Ejemplo de Círculo


DrawingArea1.Cached=true


' gambas class file

' by postapase

Public Sub Form_Open()

Me.Center
' centramos el formulario
Me.Title = "Ejemplo Círculo"


Paint.Begin(DrawingArea1)
' con Begin indicamos que comenzamos el dibujo y le indicamos donde, en este caso en DrawingArea1 entre los paréntesis.
Paint.LineWidth = 1
' el grosor de línea de la circunferencia
Paint.Arc(DrawingArea1.Width / 2, DrawingArea1.Height / 2, 50)' coordenadas x y, después indicamos el radio de la circunferencia
Paint.Stroke
' arranca y visualiza el gráfico
Paint.End


End


viernes, 16 de mayo de 2014

Dibujo Basico



' Gambas class file

Public puntoInicialX As Integer
Public puntoInicialY As Integer
Public puntoFinalX As Integer
Public puntoFinalY As Integer
Public ColorDibujo As Integer 'variable donde se guardara la elección del color
Public TipoDEdibujo As String 'variable que nos dira que tipo de dibujo queremos ejecutar


Public Sub _new()

End

Public Sub Form_Open()
Me.Center 'centramos el formulario
End

Public Sub AreaDibujo_MouseDown() 'evento que sucede cuando apretamos el boton del raton
   puntoInicialX = Mouse.X
   puntoInicialY = Mouse.y
End

Public Sub AreaDibujo_MouseUp() 'evento que sucede cuando soltamos el boton del raton
   puntoFinalX = Mouse.X
   puntoFinalY = Mouse.y
End

Public Sub AreaDibujo_MouseMove() 'evento que sucede cuando movemos el raton

 Select Case TipoDEdibujo
   Case "punto"
      Draw.Begin(AreaDibujo) 'comienzo del dibujo
      Draw.Foreground = ColorDibujo 'el color del punto que elegimos y guardamos en la variable ColorDibujo
      Draw.Point(Mouse.x, Mouse.y) 'point es punto, dibujará un punto en las coordenadas del puntero del raton
      Draw.End 'fin del dibujo
   Case "linea"
      Draw.Begin(AreaDibujo)
      Draw.Foreground = ColorDibujo
      Draw.Line(puntoInicialX, puntoInicialY, Mouse.x, Mouse.y) 'Line es línea, dibujará lineas
      Draw.End
   Case "goma"
      Draw.Begin(AreaDibujo)
      Draw.Foreground = &HFFFFFF
      Draw.FillColor = &HFFFFFF
      Draw.FillStyle = Fill.Solid
      Draw.Ellipse(Mouse.x - 15, Mouse.y - 15, 30, 30)
      Draw.End
  End Select

 End

Public Sub btnColor_Click()
   If Dialog.SelectColor() Then Return
   ColorDibujo = Dialog.Color
End

Public Sub btnLinea_Click()
  TipoDEdibujo = "linea"
End

Public Sub btnPunto_Click()
  TipoDEdibujo = "punto"
End

Public Sub btnGoma_Click()
  TipoDEdibujo = "goma"
End

Public Sub btnLimpiar_Click()

  AreaDibujo.Cached = False ' desactivamos la cache para poder borrar el DrawArea
  AreaDibujo.Clear 'borramos todo el DrawArea
  AreaDibujo.Cached = True ' activamos la cache para poder redibujar nuevamente en el DrawArea

End
Código fuente: DibujoBasico-0.0.1.tar.gz