[Solucionado] Ayuda Dibujar en picture con el hwnd

Iniciado por Cromatico, 17 Noviembre 2010, 02:16 AM

0 Miembros y 2 Visitantes están viendo este tema.

Cromatico

Hola que tal, mi nombre es Sebastian, queria hacer una consulta...
Es posible dibujar en un picture de otro proceso con su hwnd?
Por ejemplo para dibujar un punto en un picture dentro de mi proyecto puedo usar PSET, pero para hacerlo con un picture externo digamos, es posible hacerlo?
Estuve tratando de buscar informacion para ver si se podia hacer con sendmessage pero no logre encontrar nada respecto al dibujo sobre una picture externa...

Saludos y gracias!!

BlackZeroX

.
SI, si es posible, debes usar las apis GDI (en la API Guide estan o tambien en el visor de texto API de VB) debes obtener el DC del Hwnd descrito con el api GetDC(Hwnd) donde Hwnd es la entrada del Hwnd de la ventana (llamese Boton, Form, checkbox, ListBox, ListView, etc...).

un ejemplo seria este codigo:

http://infrangelux.sytes.net/Blog/index.php?option=com_content&view=article&id=19:artgdi32lineasaleatoriasonthe-fly&catid=12:catgraficos&Itemid=20

En el ejemplo; Hwnd es 0 y es para pintar en TODO, se puede limitar...  HDC = GetDC(0)...

Dulces Lunas!¡.
The Dark Shadow is my passion.

Cromatico

Primero que nada dejame felicitarte, llevo mucho tiempo leyendo posts (como visitante) y siempre ayudas y solucionas los problemas o dudas de nosotros (me incluyo ahora)

Segundo, el codigo me funciono genial en el picture, el unico problema es que el picture actualiza muy rapido y la linea que dibuje en la posicion que puse yo, (hasta con el timer en intervalo 1) como que titila pero no es nada grave...

Y por otro lado queria consultarte si se puede aumentar el grosor de la linea o bien algun estilo de punto mas con mas diametro, gracias BlackZeroX!

Saludos!

BlackZeroX

#3
.
CreatePen()

El 1 indica que tan grusa debera ser, el primer parametro es el style y el 3er parametro el color.

Código (vb) [Seleccionar]


hPen = CreatePen(PS_SOLID, 1, vbRed)





· fnPenStyle
Specifies the pen style. It can be any one of the following values:
PS_SOLID
Pen is solid.
PS_DASH
Pen is dashed. This style is valid only when the pen width is one or less in device units.
PS_DOT
Pen is dotted. This style is valid only when the pen width is one or less in device units.
PS_DASHDOT
Pen has alternating dashes and dots. This style is valid only when the pen width is one or less in device units.
PS_DASHDOTDOT
Pen has alternating dashes and double dots. This style is valid only when the pen width is one or less in device units.
PS_NULL
Pen is invisible.
PS_INSIDEFRAME
Pen is solid. When this pen is used in any graphics device interface (GDI) drawing function that takes a bounding rectangle, the dimensions of the figure are shrunk so that it fits entirely in the bounding rectangle, taking into account the width of the pen. This applies only to geometric pens.

· nWidth
Specifies the width of the pen, in logical units. If nWidth is zero, the pen is a single pixel wide, regardless of the current transformation.

· crColor
Specifies a color reference for the pen color.




Cita de: Cromatico en 17 Noviembre 2010, 23:49 PM
Segundo, el codigo me funciono genial en el picture, el unico problema es que el picture actualiza muy rapido y la linea que dibuje en la posicion que puse yo, (hasta con el timer en intervalo 1) como que titila pero no es nada grave...

No estoy muy seguro, pero creo si subclasificas dicha ventana e intervienes solo antes/despues de pintar y cancelas algunos mensajes que le llegan ( WS_Paint, me parece ) evitaras el tilde que mensionas.

Dulces Lunas!¡.

Sangriento Infierno Lunar!¡.
The Dark Shadow is my passion.

Cromatico

Mejor imposible, muchisimas gracias de nuevo!!

Solucionado!