Pregunta: | 19844 - DIBUJAR SOBRE UN MSCHART |
Autor: | Juan Gómez |
Necesito saber una forma de dibujar líneas con el control Line u otra manera sobre un gráfico creado con MSChart en VB 6.0.
Resulta que tengo un gráfico dispersión XY y necesito dibujar manualmente una serie de separaciones preestablecidas sobre el gráfico. He observado que Line, Shape y Label no pueden colocarse sobre el MSChart, quedan bajo él aunque los insertes sobre él. Sería de gran ayuda para mí obtener una respuesta. Gracias. |
Respuesta: | Javier Perez |
Puedes recurrir al API de Windows. A partir de la propiedad hwnd del control MSChart, mediante la función GetDC puedes obtener acceso a un contexto de dispositivo para la ventana del control, lo que te permitiría dibujar cualquier cosa sobre el control. Eso si, deberías tener en cuenta que cada vez que el gráfico se redibuja, se pierde lo que hayas dibujado tu, por lo que tendrías que redibujarlo. El siguiente ejemplo te puede dar una pequeña idea:
Type POINTAPI x As Long y As Long End Type Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long Public Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long Public Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, lpPoint As POINTAPI) As Long Private Sub dibujar() Dim hdc As Long Dim p As POINTAPI Dim r As Long hdc = GetDC(MSChart1.hwnd) r = MoveToEx(hdc, 8, 8, p) r = LineTo(hdc, 64, 64) r = ReleaseDC(MSChart1.hwnd, hdc) End Sub |