GDI+, mantener el estado del graphics???

06/04/2005 - 15:51 por darual | Informe spam
Pues resulta que estoy usando GDI+, para generar una serie de gráficos. Pero
me interesa poder grabar un estado actual del graphics, realizar diversas
modificaciones y volver a restaurar el estado anterior.
Pero no me funciona bien, yo estoy utilizando lo siguiente:

Public Sub SaveRestoreMio(ByVal e As PaintEventArgs)
Dim Pen As New Pen(Color.Red)
e.Graphics.DrawRectangle(Pen, 10, 10, 100, 100)

Dim estadoGraphics As Drawing2D.GraphicsState = e.Graphics.Save()

MsgBox("grabado estado")

e.Graphics.Clear(Me.BackColor)
e.Graphics.DrawRectangle(Pen, 110, 10, 100, 100)

If MsgBox("Recuparar estado?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes
Then
e.Graphics.Restore(estadoGraphics)
End If
e.Graphics.DrawRectangle(Pen, 10, 100, 100, 100)

End Sub

No se lo que pasa pero no hace lo que yo quiero, a que se puede deber, estoy
haciendo algo mal??

ayuda please.

Preguntas similare

Leer las respuestas

#1 A.Poblacion
06/04/2005 - 16:04 | Informe spam
El Graphics.Save solo salva el estado, pero no el contenido de los gráficos.
Por ejemplo, si has aplicado un Transform para cambiar de coordenadas y
haces un Save, luego cambias el Transform y dibujas algo, y luego haces un
Restore, recuperas el sistema de coordenadas originales, pero el dibujo
sigue conteniendo lo que hayas pintado mientras las coordenadas estaban
cambiadas.

Te sugiero que salves a un Bitmap el contenido del gráfico, y cuando lo
quieras restaurar le vuelvas a "pegar" el bitmap salvado.


"darual" wrote in message
news:
Pues resulta que estoy usando GDI+, para generar una serie de gráficos.


Pero
me interesa poder grabar un estado actual del graphics, realizar diversas
modificaciones y volver a restaurar el estado anterior.
Pero no me funciona bien, yo estoy utilizando lo siguiente:

Public Sub SaveRestoreMio(ByVal e As PaintEventArgs)
Dim Pen As New Pen(Color.Red)
e.Graphics.DrawRectangle(Pen, 10, 10, 100, 100)

Dim estadoGraphics As Drawing2D.GraphicsState = e.Graphics.Save()

MsgBox("grabado estado")

e.Graphics.Clear(Me.BackColor)
e.Graphics.DrawRectangle(Pen, 110, 10, 100, 100)

If MsgBox("Recuparar estado?", MsgBoxStyle.YesNo) MsgBoxResult.Yes
Then
e.Graphics.Restore(estadoGraphics)
End If
e.Graphics.DrawRectangle(Pen, 10, 100, 100, 100)

End Sub

No se lo que pasa pero no hace lo que yo quiero, a que se puede deber,


estoy
haciendo algo mal??
Respuesta Responder a este mensaje
#2 darual
06/04/2005 - 16:15 | Informe spam
Y como puedo hacerlo?

"A.Poblacion" escribió:

El Graphics.Save solo salva el estado, pero no el contenido de los gráficos.
Por ejemplo, si has aplicado un Transform para cambiar de coordenadas y
haces un Save, luego cambias el Transform y dibujas algo, y luego haces un
Restore, recuperas el sistema de coordenadas originales, pero el dibujo
sigue conteniendo lo que hayas pintado mientras las coordenadas estaban
cambiadas.

Te sugiero que salves a un Bitmap el contenido del gráfico, y cuando lo
quieras restaurar le vuelvas a "pegar" el bitmap salvado.


"darual" wrote in message
news:
> Pues resulta que estoy usando GDI+, para generar una serie de gráficos.
Pero
> me interesa poder grabar un estado actual del graphics, realizar diversas
> modificaciones y volver a restaurar el estado anterior.
> Pero no me funciona bien, yo estoy utilizando lo siguiente:
>
> Public Sub SaveRestoreMio(ByVal e As PaintEventArgs)
> Dim Pen As New Pen(Color.Red)
> e.Graphics.DrawRectangle(Pen, 10, 10, 100, 100)
>
> Dim estadoGraphics As Drawing2D.GraphicsState = e.Graphics.Save()
>
> MsgBox("grabado estado")
>
> e.Graphics.Clear(Me.BackColor)
> e.Graphics.DrawRectangle(Pen, 110, 10, 100, 100)
>
> If MsgBox("Recuparar estado?", MsgBoxStyle.YesNo) > MsgBoxResult.Yes
> Then
> e.Graphics.Restore(estadoGraphics)
> End If
> e.Graphics.DrawRectangle(Pen, 10, 100, 100, 100)
>
> End Sub
>
> No se lo que pasa pero no hace lo que yo quiero, a que se puede deber,
estoy
> haciendo algo mal??



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida