Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





GROSOR DE LINEA

Iniciado por frederickzea, 11 de Enero de 2007, 04:16:17 PM

« anterior - próximo »

frederickzea

Hola a todos, especialmente al amigo EX3, he posteado esta pregunta en otros foros, y creo que porfin llegue al indicado,
quiero hacer una linea mas gruesa con el Draw_line() por su puesto usando la libreria Dx_lib32, uso el vb .net,  
el comando Draw_line te dibuja una linea muy delgada, lo que quiero es que sea mas gruesa.... he pensado en dibujar varias lineas , pero supongo que debe haber un camino mas facil.. gracias de ante mano por tu respuesta

[EX3]

Hola, frederickzea.

Siento decirte que no se puede modificar el grosor de las lineas que componen las primitivas en dx_lib32. Podrias dibujar lineas mas gruesas si estas fueran horizontales o verticales, osea, perpendiculares, y seria haciendolo con la funcion DRAW_Box(), osea, dibujando una caja con una altura y una longitud o viceversa. Quizas te sirva.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

frederickzea

uy que pena, amigo X, pense que si se podria hacer eso, no importa, otra pregunta, he intentado hacer las lineas con el objeto pen de vb .net  creo un objeto pen y un  creategraphics  y pasa esto....
si me dibija las lineas que quiero, con cualquier caracteristica, propia de vb .net, pero,,, y siempre hay un pero, hay un intenso parpadeo cada vez que se vuelve a dibujar, lo que no sucede con el draw_line de la libreria DX_LIB32.... sabes porque sucede esto:
Nota: hago esto

do while looping
este bucle es el que se repite constantemente en el evento load del formulario, aqui se dibujan constantemente todos los graficos

call dibujalinea() 'este es mi procedimiento que dibuja una linea usando el objeto pen de vb .net

bueno aqui sigue el resto del codigo.

loop

[EX3]

Si dibujas utilizando las funciones del GDI o del GDI+ de Windows, su API grafico, no debes hacer un bucle para redibujar las operaciones ya que el propio bucle interno del programa, bucle que en este implementa en el codigo de forma transparente VB.NET, redibuja la ventana y su contenido, por lo que las operaciones graficas persisten. Solo deberias tener en cuenta de hacer la llamada en el evento Paint del fomrulario para que redibuje la ventana para evitar que las zonas que se solapen con otra ventana se borren, y el evento Resize para que refresque el contenido del formulario o control donde estes dibujando. Te paso un ejemplo sencillo de como programar con el GDI en VB.NET:
Public Class Form1

   Dim m_gfx As Graphics

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       m_gfx = Me.CreateGraphics()
   End Sub

   Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
       m_gfx.DrawLine(Pens.Black, 0, 0, Me.ClientSize.Width, Me.ClientSize.Height)

   End Sub

   Private Sub Form1_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize
       Me.Refresh()

   End Sub

   Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
       m_gfx.Dispose()

   End Sub
End Class

Por otro lado, dx_lib32 trabaja de forma distinta. En este caso tenemos que hacer nosotros nuestro propio bucle que gestionamos nosotros. dx_lib32 cuando dibuja la escena, justo cuando llamas a la funcion Frame(), primero borra el buffer de memoria y despues dibuja todas las operaciones graficas que has llamado, seria similar a refrescar el formulario con el metodo Refresh(). Debido a esto tienes que hacer un bucle para que se repitan las llamadas por que sus resultados no son persistentes como en el caso del GDI de Windows.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

frederickzea

oye, te pasaste, voy a probar ahora mismo, te aviso los resultados...

humber

Hola soy nuevo por aqui...

no se si te entendi bien pero lo que tu quieres es hacer lineas mas gruesas... si es a si hay te va el codigo revisalo porque no estoy con el visual asi que te lo escribire como me acuerde

dim linea as pen = new pen(color.black, 10) ' el 10 es grosor del lapiz
Dim grafico As Graphics
grafico = me.createGraphics()
grafico.Drawline(linea,0,20,100,20)

espero te funcione luego cuando tengo tiempo lo hago con el visual y copio el codigo tal cual es.....

solo una duda saben como hacer para que no se me borren las lineas al pasar un msgbox() sobre lo que he dibujado... Suerte.....

[EX3]

Cita de: "humber"solo una duda saben como hacer para que no se me borren las lineas al pasar un msgbox() sobre lo que he dibujado... Suerte.....
No es por nada pero si no es molestia para no salirnos mas de tiesto, las preguntas que no tengan que ver con dx_lib32 hacerlas en el foro de programacion general, please :)

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

humber


cancerbero

Citardim linea as pen = new pen(color.black, 10) ' el 10 es grosor del lapiz
Dim grafico As Graphics
grafico = me.createGraphics()
grafico.Drawline(linea,0,20,100,20)

Disculpa, pero no he entendido cómo funciona esto del Graphics.... se supone que esa línea donde se dibuja? en qué objeto del formulario? hay que crear un objeto especial o dibuja sobre la ventana del formulario?

De antemano, gracias por las respuestas.

Saludos!
i me lo propongo, puedo llegar tan lejos como quiera......

[EX3]

El objeto Graphics de .NET pinta en la superficie que le tengas referenciada, en este caso seria sobre el formulario.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.