Clase para Graficos Vectoriales

Clase para Graficos Vectoriales

Postby Compuin » Thu Sep 15, 2022 6:11 pm

Saludos,

Existe alguna clase que me permita manejar graficos de este tipo en tiempo de ejecucion?

Gracias de antemano
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
Compuin
 
Posts: 1214
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

Re: Clase para Graficos Vectoriales

Postby Antonio Linares » Thu Sep 15, 2022 6:52 pm

Puedes usar HTML5 SVG y visualizarlo desde tu app usando la Clase TWebView:

https://www.w3schools.com/html/html5_svg.asp

Asi el trabajo que hagas te sirve para desktop y para la web directamente :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Clase para Graficos Vectoriales

Postby Compuin » Thu Sep 15, 2022 7:22 pm

Gracias maestro,

En tiempo de ejecucion necesito cambiar los valores e irlos viendo al mismo tiempo, por lo tanto esta solucion no creo que sea viable.
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
Compuin
 
Posts: 1214
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

Re: Clase para Graficos Vectoriales

Postby Antonio Linares » Thu Sep 15, 2022 7:24 pm

Si explicas con mas detalle lo que necesitas, veremos como poder hacerlo y ayudarte mejor :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Clase para Graficos Vectoriales

Postby Compuin » Thu Sep 15, 2022 7:29 pm

Antonio Linares wrote:Si explicas con mas detalle lo que necesitas, veremos como poder hacerlo y ayudarte mejor :-)


Como dicen,

Una imagen vale mas que mil palabras :D

Image

Con los controles Slider la imagen deberia ajustarse a medida que se vayan graduando cada uno, eso en tiempo de ejecucion
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
Compuin
 
Posts: 1214
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

Re: Clase para Graficos Vectoriales

Postby Antonio Linares » Thu Sep 15, 2022 7:42 pm

Que aplicación es esa ? Existe demo ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Clase para Graficos Vectoriales

Postby Compuin » Thu Sep 15, 2022 7:45 pm

Antonio Linares wrote:Que aplicación es esa ? Existe demo ?


Es una aplicacion de Sasteria, no existe demo
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
Compuin
 
Posts: 1214
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

Re: Clase para Graficos Vectoriales

Postby Antonio Linares » Fri Sep 16, 2022 4:19 am

No necesitas graficos vectoriales para hacer eso, solo tienes que dibujar "arcos" usando la función Arc() disponible en FWH

https://docs.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-arc
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Clase para Graficos Vectoriales

Postby Compuin » Fri Sep 16, 2022 11:35 am

Gracias maestro,

Existe algun ejemplo en los samples de FWH?
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
Compuin
 
Posts: 1214
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

Re: Clase para Graficos Vectoriales

Postby Antonio Linares » Sat Sep 17, 2022 3:24 am

Aqui tienes un ejemplo, para las lineas curvas tienes que usar Arc()
Code: Select all  Expand view
#include "FiveWin.ch"
#include "slider.ch"

static nLargoManga := 400

function Main()

   local oWnd, oSlider, nValue := 400, oPanel

   DEFINE WINDOW oWnd

   @ 2, 2 SLIDER oSlider VAR nValue SIZE 300, 20 OF oWnd ;
      COLORS nil, nil, CLR_BLUE SLIMSTYLE ;
      RANGE 0, 800 ON CHANGE ( nLargoManga := nValue, oPanel:Refresh() )

   @ 20, 350 PANEL oPanel OF oWnd SIZE 1200, 800

   oPanel:SetColor( "W/N" )
   oPanel:bPainted = { | hDC | Paint( hDC ) }

   ACTIVATE WINDOW oWnd MAXIMIZED

return nil

function Paint( hDC )

   local hOldPen, hBluePen

   hBluePen  = CreatePen( PS_SOLID, 1, CLR_HBLUE )
   hOldPen = SelectObject( hDC, hBluePen )
   MoveTo( hDC, 100, 100 )
   LineTo( hDC, 100, nLargoManga )
   MoveTo( hDC, 100, nLargoManga )
   LineTo( hDC, 200, nLargoManga )
   MoveTo( hDC, 200, nLargoManga )
   LineTo( hDC, 200, 200 )
   SelectObject( hDC, hOldPen )  

return nil  

Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Clase para Graficos Vectoriales

Postby Compuin » Sat Sep 17, 2022 2:39 pm

WOW!!

Que potencia la de FWH.

Muchas gracuias maestro, probare lo de las curvas.
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
Compuin
 
Posts: 1214
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

Re: Clase para Graficos Vectoriales

Postby J. Ernesto » Wed Sep 21, 2022 12:57 am

Antonio, buenas noches.

Por favor un ejemplo con lineas y arcos unidos

Gracias
J. Ernesto Pinto Q.
Fwh_x64 2407 + BCC++_x64 7_70__6_72 + Harbour 3.20 + LopeEdit 5.8 + UEstudio 26.0
jepsys@hotmail.com, jepsys@gmail.com, jepsys@yahoo.com
User avatar
J. Ernesto
 
Posts: 161
Joined: Tue Feb 03, 2009 10:08 pm
Location: Bogotá D.C. Colombia

Re: Clase para Graficos Vectoriales

Postby Antonio Linares » Wed Sep 21, 2022 6:16 am

Cuestión de matemáticas y de ir probando :-)
Code: Select all  Expand view
#include "FiveWin.ch"
#include "slider.ch"

static nLargoManga := 400

function Main()

   local oWnd, oSlider, nValue := 400, oPanel

   DEFINE WINDOW oWnd

   @ 2, 2 SLIDER oSlider VAR nValue SIZE 300, 20 OF oWnd ;
      COLORS nil, nil, CLR_BLUE SLIMSTYLE ;
      RANGE 0, 800 ON CHANGE ( nLargoManga := nValue, oPanel:Refresh() )

   @ 20, 350 PANEL oPanel OF oWnd SIZE 1200, 800

   oPanel:SetColor( "W/N" )
   oPanel:bPainted = { | hDC | Paint( hDC ) }

   ACTIVATE WINDOW oWnd MAXIMIZED

return nil

function Paint( hDC )

   local hOldPen, hBluePen, x, y, n

   hBluePen  = CreatePen( PS_SOLID, 1, CLR_HBLUE )
   hOldPen = SelectObject( hDC, hBluePen )
   MoveTo( hDC, 100, 100 )
   LineTo( hDC, 100, nLargoManga )
   MoveTo( hDC, 100, nLargoManga )
   LineTo( hDC, 200, nLargoManga )
   MoveTo( hDC, 200, nLargoManga )
   LineTo( hDC, 200, 160 )
   MoveTo( hDC, 100, 100 )

   x = 100
   y = 100
 
   for n = 0 to 100
       x = x + 1
       y = y + ( 1 * sin( n * 3.14 / 100 ) )
       SetPixel( hdc, x, y, CLR_HBLUE )
   next    

   SelectObject( hDC, hOldPen )  

return nil  

Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Clase para Graficos Vectoriales

Postby Compuin » Wed Sep 21, 2022 11:08 am

Hola maestro, muchas gracias por los ejemplos.

Como puedo expresar o calcular los valores en centimetros o pulgadas, es decir, la altura en centimetros o pulgadas y que estos sean centimetros o pulgadas cuando se imprima? (Me disculpo por la redundancia)

Gracias de antemano
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
Compuin
 
Posts: 1214
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

Re: Clase para Graficos Vectoriales

Postby Antonio Linares » Wed Sep 21, 2022 1:48 pm

Existen varios factores a tener en cuenta:

1. centimetros = pulgadas x 2,54

2. en la pantalla vemos pixeles, y la cantidad de pixeles depende de los DPI (dots per inch = puntos por pulgada) del dispositivo

3. una aproximación sería que points = pixels * 72 / 96, lo que quiere decir que hacen falta 72 puntos por pulgadas y 96 pixeles por pulgadas

4. Normalmente usamos 300 DPI para imprimir, esto es: 300 pixeles por pulgada
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 28 guests