|
Página 1 de 2
|
Como Borro Un Area En La Que Estoy Dibujando Con Paint?
Autor |
Mensaje |
tercoIDE
Analista Programador
Registrado: Noviembre 2013
Mensajes: 713
Edad: 54
|
Como Borro Un Area En La Que Estoy Dibujando Con Paint?
otra preguntonta:
estoy dibujando en una DrawingArea
Paint.Begin(pizarron)
.
.
Paint.end
hermoso, ahora, quiero re-dibujar, pero primero borrando lo que habia:
Paint.Clear ' a diferencia de la clase Draw, aqui no existe ---> Error!
|
#1 Martes, 25 Agosto 2015, 17:32 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Como Borro Un Area En La Que Estoy Dibujando Con Paint?
tercoIde:
Yo lo que hago es dibujar un rectangulo relleno de color blanco del tamaño de la zona que quiero borrar (o de toda la extensión del DrawingArea), asi "borro"
Saludos
Julio
|
#2 Martes, 25 Agosto 2015, 18:00 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Como Borro Un Area En La Que Estoy Dibujando Con Paint?
...una otra posibilidad...con un Return....
Private a As Byte
Public Sub DrawingArea1_Draw()
Dim c As Integer[] = [Color.Blue, Color.Green, Color.Yellow, Color.Red]
Dim p As Float[] = [0, 0.34, 0.67, 1]
With Paint
If a = 1 Then
Return
Else
.Brush = .LinearGradient(10, 40, 300, 40, c, p)
.Rectangle(10, 40, 300, 40)
.Fill
Endif
End With
End
Public Sub Button1_Click()
a = 1
DrawingArea1.Refresh
End
|
#3 Martes, 25 Agosto 2015, 20:22 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Como Borro Un Area En La Que Estoy Dibujando Con Paint?
tercoIDE:
Tambien hay otra forma de hacerlo:
Creas un array donde tengas todos los elementos que tengas que dibujar.
El dibujo lo array recorriendo ese array
Y luego si tienes que borrar alguno de ellos, solamente lo eliminas del array.
Por ejemplo.
Imagina que tienes que dibujar 10 lineas (en tu caso barras )
Creas una estructura "linea" que tenga la informacion de las "linea": x0,y0,y1,y2
Creas un array de estructura del tipo linea, donde vas a añadir las distintas lineas que tienes que dibujar.
Cuando vayas a dibujar, recorres el array de estrutura tipo linea, para ir dibujando.
Si en algun momento quieres borrar una linea, sabiendo el número, borras el elemento del array, y cuando se vaya a dibujar, ya no aparecerá dicho elemento.
Saludos
|
#4 Miercoles, 26 Agosto 2015, 08:11 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Como Borro Un Area En La Que Estoy Dibujando Con Paint?
jsbsan, yo creo que de las tus soluciones la más breve y mejor es la primera: con un rectangulo relleno de un color, por ejemplo aquello por defecto.
última edición por vuott el Miercoles, 26 Agosto 2015, 15:41; editado 3 veces
|
#5 Miercoles, 26 Agosto 2015, 10:40 |
|
|
tercoIDE
Analista Programador
Registrado: Noviembre 2013
Mensajes: 713
Edad: 54
|
Re: Como Borro Un Area En La Que Estoy Dibujando Con Paint?
jsbsan, yo creo que la solución más breve y mejor es la tu dijiste: con un rectangulo relleno de un color, por ejemplo aquello por defecto.
sin dudas!
Lo bueno, si es breve, dos veces bueno!!
gracias a ambos
|
#6 Miercoles, 26 Agosto 2015, 11:50 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Como Borro Un Area En La Que Estoy Dibujando Con Paint?
jsbsan, yo creo que la solución más breve y mejor es la tu dijiste: con un rectangulo relleno de un color, por ejemplo aquello por defecto.
sin dudas!
Lo bueno, si es breve, dos veces bueno!!
gracias a ambos
Si, pero no cabe duda que la solución de Julio es "La Solución". Guardar los dibujos, trazos, etc. en arrays de estructuras es la manera correcta de dibujar y tenerlo todo bajo control, aunque parezca más complicado. Si además usamos el paradigma POO, resulta que todavía es más sencillo (y creo que lo más adecuado).
Por otra parte, si queremos que nuestro lienzo tenga la capacidad de deshacer y rehacer cambios, me temo que es la única solución posible.
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#7 Miercoles, 26 Agosto 2015, 22:00 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Como Borro Un Area En La Que Estoy Dibujando Con Paint?
...mi parece que tercoIDE quiere borrar todo el dibujo.
|
#8 Miercoles, 26 Agosto 2015, 22:20 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Como Borro Un Area En La Que Estoy Dibujando Con Paint?
Bueno, podemos utilizar tambien un querido amigo de jsbsan, es decir el... " Divino ".
Al iniciar el programa, tenemos que asignar cualquier color de fondo a la DrawingArea (codigo para sistema de 64-bit):
Public Sub Form_Open()
' Asignamos al fondo, por ejemplo, el color &D6D6D6:
DrawingArea1.Background = Color.Background
End
Public Sub DrawingArea1_Draw()
' El dibujo es simplemente un círculo rojo:
With Paint
.Brush = Paint.Color(Color.Red)
.Ellipse(100, 10, 100, 100)
.Stroke
.End
End With
End
Public Sub Button1_Click() ' Para borrar el dibujo de la DrawingArea
Dim p1, p2 As Pointer ' <------ El "Divino"
Dim st As Stream
p1 = Object.Address(DrawingArea1)
p2 = Pointer@(p1 + 24)
' Escribimos en la parte de area de memoria del "DrawingArea" dedicada al color de background del objecto:
st = Memory p2 For Write
Write #st, &D6D6D6FFFFFFFF As Long
st.Close
Object.Lock(DrawingArea1)
DrawingArea1.Refresh
End
Public Sub Button2_Click() ' Para dibujar el círculo rojo de nuevo
Object.Unlock(DrawingArea1)
DrawingArea1.Refresh
End
última edición por vuott el Viernes, 28 Agosto 2015, 18:55; editado 6 veces
|
#9 Viernes, 28 Agosto 2015, 12:25 |
|
|
tercoIDE
Analista Programador
Registrado: Noviembre 2013
Mensajes: 713
Edad: 54
|
Re: Como Borro Un Area En La Que Estoy Dibujando Con Paint?
Bueno, podemos utilizar tambien un querido amigo de jsbsan, es decir el... " Divino ".
Al iniciar el programa, tenemos que asignar cualquier color de fondo a la DrawingArea (codigo para sistema de 64-bit):
Public Sub Form_Open()
' Asignamos al fondo, por ejemplo, el color &D6D6D6:
DrawingArea1.Background = Color.Background
End
Public Sub DrawingArea1_Draw()
' El dibujo es simplemente un círculo rojo:
With Paint
.Brush = Paint.Color(Color.Red)
.Ellipse(100, 10, 100, 100)
.Stroke
.End
End With
End
Public Sub Button1_Click() ' Para borrar el dibujo de la DrawingArea
Dim p1, p2 As Pointer ' <------ El "Divino"
Dim st As Stream
p1 = Object.Address(DrawingArea1)
p2 = Pointer@(p1 + 24)
' Escribimos en la parte de area de memoria del "DrawingArea" dedicada al color de background del objecto:
st = Memory p2 For Write
Write #st, &D6D6D6FFFFFFFF As Long
st.Close
Object.Lock(DrawingArea1)
DrawingArea1.Refresh
End
Public Sub Button2_Click() ' Para dibujar el círculo rojo de nuevo
Object.Unlock(DrawingArea1)
DrawingArea1.Refresh
End
"Voutt y sus punteros" que tal el titulo de tu nuevo libro?
|
#10 Sabado, 29 Agosto 2015, 11:56 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 2
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|