Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: LeandroA en 23 Julio 2008, 03:09 am



Título: Api Google Char
Publicado por: LeandroA en 23 Julio 2008, 03:09 am
Hola este es un ejemplo para pode utilizar el Api Google Char desde visual, bien esto puede ser utili en muy pocos caso, cuando tengamos conexion a internet y las consultas no sea muy frecuentes, asi que bien cada uno sabra si le puede dar utilidad.

Aca pueden encontrar toda la informacion de como utilizar esta api
http://code.google.com/apis/chart/


agregar Cuatro Botones, un Picture1,  y un HScroll1
Código:
Option Explicit
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Private Declare Function GdipCreateFromHDC Lib "gdiplus" (ByVal HDC As Long, graphics As Long) As Long
Private Declare Function GdipDisposeImage Lib "gdiplus" (ByVal image As Long) As Long
Private Declare Function GdipDrawImageRectRectI Lib "gdiplus" (ByVal graphics As Long, ByVal image As Long, ByVal dstx As Long, ByVal dsty As Long, ByVal dstwidth As Long, ByVal dstheight As Long, ByVal srcx As Long, ByVal srcy As Long, ByVal srcwidth As Long, ByVal srcheight As Long, ByVal srcUnit As Long, ByVal imageAttributes As Long, Optional ByVal callback As Long = 0, Optional ByVal callbackData As Long = 0) As Long
Private Declare Function GdipDeleteGraphics Lib "gdiplus" (ByVal graphics As Long) As Long
Private Declare Function GdipLoadImageFromFile Lib "gdiplus" (ByVal filename As String, ByRef image As Long) As Long
Private Declare Function GdiplusStartup Lib "gdiplus" (ByRef token As Long, inputbuf As Long, Optional ByVal outputbuf As Long = 0) As Long
Private Declare Sub GdiplusShutdown Lib "gdiplus" (ByVal token As Long)

Private Function RenderChar(ByVal HDC As Long, ByVal Param As String, ByVal X As Long, ByVal Y As Long, ByVal Width As Long, ByVal Height As Long) As Boolean
Dim hGraph As Long
Dim hImage As Long
Dim hGdiPlus As Long

If URLDownloadToFile(0, "http://chart.apis.google.com/chart?chs=" & Width & "x" & Height & "&" & Param, App.Path & "\Temp.png", 0, 0) = 0 Then

    GdiplusStartup hGdiPlus, 1
   
    If GdipCreateFromHDC(HDC, hGraph) = 0 Then

        If GdipLoadImageFromFile(StrConv(App.Path & "\Temp.png", vbUnicode), hImage) = 0 Then
       
            If GdipDrawImageRectRectI(hGraph, hImage, X, Y, Width, Height, 0, 0, Width, Height, &H2&, 0) = 0 Then
                RenderChar = True
            End If
           
        End If
       
        GdipDisposeImage hImage
       
    End If
   
    GdipDeleteGraphics hGraph
    GdiplusShutdown hGdiPlus
    Kill App.Path & "\Temp.png"
End If
End Function



Private Sub Command1_Click()
Dim Param As String
Param = "cht=p3&chd=t:80,40,30&chl=Sapallo|Lechuga|Tomate"
Debug.Print RenderChar(Picture1.HDC, Param, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight)
End Sub

Private Sub Command2_Click()
Dim Param As String
Param = "cht=bhs&chco=ff0000,00ff00,0000ff,&chd=s:FOE,THE,Bar&chxt=x,y&chxl=1:|Dec|Nov|Oct|0:||20K||60K||100K|"
Debug.Print RenderChar(Picture1.HDC, Param, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight)
End Sub

Private Sub Command3_Click()
Dim Param As String
Param = "cht=gom&chd=t:" & HScroll1.Value & "&chl=" & "Valor " & HScroll1.Value
Debug.Print RenderChar(Picture1.HDC, Param, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight)
End Sub

Private Sub Command4_Click()
Dim Param As String
Param = "cht=v&chd=t:100,80,60,30,30,30,10&chco=00ff00,0000ff"
Debug.Print RenderChar(Picture1.HDC, Param, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight)
End Sub

Private Sub Form_Load()
Picture1.ScaleMode = vbPixels
Picture1.Move 0, 0, 5500, 2500
HScroll1.Max = 100: HScroll1.Min = 1
End Sub

Saludos


Título: Re: Api Google Char
Publicado por: seba123neo en 23 Julio 2008, 03:25 am
Hola, excelente Leandro  ;D,esto esta muy bueno,viste se pueden hacer un monton de cosas con estas api's onlines ya sea de google o de cualquier otro,tienen tantas opciones que no da para leerlo todo,por lo menos yo no podria es una perdida de tiempo bastante importante leer todo,pero ir haciendo miniaplicaciones de a poco asi mostrando funciones esta bien... :xD

saludos.