Personalizar WinForm (subclasificación?)

13/02/2005 - 16:19 por Mario | Informe spam
Hola,
Me gustaria dar otro aspecto a las ventanas. Però no sé por dónde empezar.
Cambiarle la barra del título, cambiar los iconos de maximirzar,
minimizar
Alguien me podria dar una pista de como empezar?
He leido algo sobre la subclasificación, pero tampoco sé muy bien de que vá.
Algun link? alguna pita?
Grácias

Preguntas similare

Leer las respuestas

#1 Marino Posadas
13/02/2005 - 22:15 | Informe spam
Hola Mario

La subclasificación se utilizaba en VB6 por que no daba para más...)) Y era
posible desde el momento en que apareció en VB5 el operador AddressOf. Ahora
es mucho más fácil. si quieres cambiar el aspecto de una ventana puedes
asignarle FormBorderStyle=None, y ponerle una imagen de fondo con un color
que delimite lo que quieras que se vea. Luego, estableces en el formulario
ese color como TransparencyKey y al lanzarse el color seleccionado no se
verá, dejando solo el resto.

Si lo que quieres es cambiar el aspecto de un control, fijate en la
presencia de la propiedad OwnerDraw, y la pones en otro valor personalizado.
A partir de ahí, cada vez que Windows tenga que pintar el control, pasará
por los eventos DrawItem (y MeasureItem), donde tú podrás definir tu propio
código de dibujo, con ayuda del objeto Graphics que suministra el
parámetro -e- del evento.

Todavía tienes más opciones: Puedes escribir tú el evento Paint() de
cualquier control, y crear un objeto GraphicsPath. Es como una bolsa de
gráficos donde tú vas almacenando figuras mediante la invocación a métodos
de dibujo con un objeto Graphics. Una vez que has volcado varias figuras
dentro, le dices al control (pongamos que sea un botón), algo como:

button1.Region = new Region(MiGraphicsPath),

y lo que se verá es lo exclusivamente definido por el objeto

Y, por último, puedes acudir a la subclasificación, de dos formas:
Sobrescribiendo el Método WmdProc de las ventanas, para que cuando Windows
pase a comprobar lo que hay que hacer como respuesta a un mensaje, tu código
se ejecute primero, pudiendo anular la funcionalidad predeterminada de
Windows, o incluso utilizar la interfaz IMessageFilter.

Si quieres más ejemplos, -reales- de cómo funciona todo esto, te los puedes
descargar de mi página eventos en www.Elavefenix.n et, o también puedes leer
un artículo que publiqué sobre subclasificación y la interfaz en mi sección
de artículos.

En fin, ¡vaya ladrillo!. Espero que te sirva para iniciarte (sobre todo los
ejemplos).


Saludos cordiales
Marino Posadas
MVP Visual C#

www.ElAveFenix.net




"Mario" escribió en el mensaje
news:
Hola,
Me gustaria dar otro aspecto a las ventanas. Però no sé por dónde empezar.
Cambiarle la barra del título, cambiar los iconos de maximirzar,
minimizar
Alguien me podria dar una pista de como empezar?
He leido algo sobre la subclasificación, pero tampoco sé muy bien de que
vá.
Algun link? alguna pita?
Grácias


Respuesta Responder a este mensaje
#2 Mario
13/02/2005 - 23:22 | Informe spam
Vaya...
Muchas grácias. Ahora, ya sé por dónde empezar!

Grácias,

"Marino Posadas" escribió en el mensaje
news:
Hola Mario

La subclasificación se utilizaba en VB6 por que no daba para más...)) Y


era
posible desde el momento en que apareció en VB5 el operador AddressOf.


Ahora
es mucho más fácil. si quieres cambiar el aspecto de una ventana puedes
asignarle FormBorderStyle=None, y ponerle una imagen de fondo con un color
que delimite lo que quieras que se vea. Luego, estableces en el formulario
ese color como TransparencyKey y al lanzarse el color seleccionado no se
verá, dejando solo el resto.

Si lo que quieres es cambiar el aspecto de un control, fijate en la
presencia de la propiedad OwnerDraw, y la pones en otro valor


personalizado.
A partir de ahí, cada vez que Windows tenga que pintar el control, pasará
por los eventos DrawItem (y MeasureItem), donde tú podrás definir tu


propio
código de dibujo, con ayuda del objeto Graphics que suministra el
parámetro -e- del evento.

Todavía tienes más opciones: Puedes escribir tú el evento Paint() de
cualquier control, y crear un objeto GraphicsPath. Es como una bolsa de
gráficos donde tú vas almacenando figuras mediante la invocación a métodos
de dibujo con un objeto Graphics. Una vez que has volcado varias figuras
dentro, le dices al control (pongamos que sea un botón), algo como:

button1.Region = new Region(MiGraphicsPath),

y lo que se verá es lo exclusivamente definido por el objeto

Y, por último, puedes acudir a la subclasificación, de dos formas:
Sobrescribiendo el Método WmdProc de las ventanas, para que cuando Windows
pase a comprobar lo que hay que hacer como respuesta a un mensaje, tu


código
se ejecute primero, pudiendo anular la funcionalidad predeterminada de
Windows, o incluso utilizar la interfaz IMessageFilter.

Si quieres más ejemplos, -reales- de cómo funciona todo esto, te los


puedes
descargar de mi página eventos en www.Elavefenix.n et, o también puedes


leer
un artículo que publiqué sobre subclasificación y la interfaz en mi


sección
de artículos.

En fin, ¡vaya ladrillo!. Espero que te sirva para iniciarte (sobre todo


los
ejemplos).


Saludos cordiales
Marino Posadas
MVP Visual C#

www.ElAveFenix.net




"Mario" escribió en el mensaje
news:
> Hola,
> Me gustaria dar otro aspecto a las ventanas. Però no sé por dónde


empezar.
> Cambiarle la barra del título, cambiar los iconos de maximirzar,
> minimizar
> Alguien me podria dar una pista de como empezar?
> He leido algo sobre la subclasificación, pero tampoco sé muy bien de que
> vá.
> Algun link? alguna pita?
> Grácias
>
>


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