Sistema coordenadas en PictureBox

30/05/2005 - 06:20 por Maria Agustina Paz | Informe spam
Hola. Necesito saber como modificar el sistema de coordenadas por defecto que
tienen los PictureBox para dibujar lineas, puntos, elipses, etc.
Por defecto el punto 0,0 donde se cruzan los ejes x,y esta en el vertice
arriba a la izquierda del control PictureBox, y el eje Y es positivo hacia
abajo.
Necesito que mi sistema de coordenadas tenga el punto 0,0 en el centro del
PictureBox y el eje Y sea positivo hacia arriba.

En Visual Basic 6 esto se hacia FACILMENTE con el metodo Scale o con las
propiedades ScaleTop, ScaleLeft, ScaleHeigh, ScaleWidht, pero no se como
hacer lo mismo en Visual Basic .NET

He intentado hacerlo manipulando el objeto Graphics que se obtiene con el
metodo CreateGraphics del PictureBox, pero no he conseguido hacerlo. Creo que
debe ser muy facil hacerlo pero no consigo darme cuenta.

Saludo y gracias si alguien puede dar una respuesta

Preguntas similare

Leer las respuestas

#1 Anonimo
08/06/2005 - 21:37 | Informe spam
Hola Maria...

Estoy intentando hacer lo mismo que tu, si has encontrado alguna solución,
por favor compártela...

Gracias de antemano...
José - G. Álvarez
Valencia - Venezuela.

"Maria Agustina Paz" escribió
en el mensaje news:
Hola. Necesito saber como modificar el sistema de coordenadas por defecto


que
tienen los PictureBox para dibujar lineas, puntos, elipses, etc.
Por defecto el punto 0,0 donde se cruzan los ejes x,y esta en el vertice
arriba a la izquierda del control PictureBox, y el eje Y es positivo hacia
abajo.
Necesito que mi sistema de coordenadas tenga el punto 0,0 en el centro del
PictureBox y el eje Y sea positivo hacia arriba.

En Visual Basic 6 esto se hacia FACILMENTE con el metodo Scale o con las
propiedades ScaleTop, ScaleLeft, ScaleHeigh, ScaleWidht, pero no se como
hacer lo mismo en Visual Basic .NET

He intentado hacerlo manipulando el objeto Graphics que se obtiene con el
metodo CreateGraphics del PictureBox, pero no he conseguido hacerlo. Creo


que
debe ser muy facil hacerlo pero no consigo darme cuenta.

Saludo y gracias si alguien puede dar una respuesta
Respuesta Responder a este mensaje
#2 José Manuel Agüero
10/06/2005 - 02:10 | Informe spam
Hola, Maria:

En GDI+ los cambios de escala se hacen mediante transformaciones. Puedes ver la escasa documentación en:
http://msdn.microsoft.com/library/d...frame=true

Como ejemplo (yo no soy ningún experto) mira este código:

protected overrides sub OnPaint(byval e as painteventargs)
mybase.onpaint(e)
dim g as graphics=e.graphics
g.scaletransform(me.clientsize.width/2f,-me.clientsize.height/2f)
g.translatetransform(1f,-1f)
g.drawrectangle(New Pen(Color.Black, -1),0f,0f,0.5f,0.5f)
end sub

Con ScaleTransform indico la escala que quiero que tenga mi dibujo. En este caso quiero que el área cliente del formulario tenga 2 unidades de anchura, así que divido la anchura original por 2. Análogamente con la altura, salvo que uso el signo menos para invertir el eje.
Con TranslateTransform muevo el origen de coordenadas. Hay que tener en cuenta que después de ScaleTransform el origen de coordenadas sigue en la esquina superior izquierda pero la anchura es de 2 unidades y la altura de -2 (ya que ahora el eje y es positivo hacia arriba).
Finalmente dibujo un rectángulo con origen en (0,0), que ahora es el centro del formulario, y con una anchura y altura de media unidad, es decir, que llegará a medio camino de las partes superior y derecha del formulario.
Un detalle importante a tener en cuenta es que la escala afecta también al Pen con el que se dibuja. Yo he creado uno con grosor de -1, que GDI+ interpreta como un pixel (independientemente de la escala).

Saludos.

"Maria Agustina Paz" escribió en el mensaje news:
| Hola. Necesito saber como modificar el sistema de coordenadas por defecto que
| tienen los PictureBox para dibujar lineas, puntos, elipses, etc.
| Por defecto el punto 0,0 donde se cruzan los ejes x,y esta en el vertice
| arriba a la izquierda del control PictureBox, y el eje Y es positivo hacia
| abajo.
| Necesito que mi sistema de coordenadas tenga el punto 0,0 en el centro del
| PictureBox y el eje Y sea positivo hacia arriba.
|
| En Visual Basic 6 esto se hacia FACILMENTE con el metodo Scale o con las
| propiedades ScaleTop, ScaleLeft, ScaleHeigh, ScaleWidht, pero no se como
| hacer lo mismo en Visual Basic .NET
|
| He intentado hacerlo manipulando el objeto Graphics que se obtiene con el
| metodo CreateGraphics del PictureBox, pero no he conseguido hacerlo. Creo que
| debe ser muy facil hacerlo pero no consigo darme cuenta.
|
| Saludo y gracias si alguien puede dar una respuesta
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida