FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Clase para Graficos Vectoriales
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Clase para Graficos Vectoriales
Posted: Thu Sep 15, 2022 06:11 PM

Saludos,

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

Gracias de antemano

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Clase para Graficos Vectoriales
Posted: Thu Sep 15, 2022 06: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
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Clase para Graficos Vectoriales
Posted: Thu Sep 15, 2022 07: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 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Clase para Graficos Vectoriales
Posted: Thu Sep 15, 2022 07:24 PM

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

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Clase para Graficos Vectoriales
Posted: Thu Sep 15, 2022 07: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 :-)



Con los controles Slider la imagen deberia ajustarse a medida que se vayan graduando cada uno, eso en tiempo de ejecucion

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Clase para Graficos Vectoriales
Posted: Thu Sep 15, 2022 07:42 PM

Que aplicaci贸n es esa ? Existe demo ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Clase para Graficos Vectoriales
Posted: Thu Sep 15, 2022 07:45 PM
Antonio Linares wrote:Que aplicaci贸n es esa ? Existe demo ?


Es una aplicacion de Sasteria, no existe demo

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Clase para Graficos Vectoriales
Posted: Fri Sep 16, 2022 04: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
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Clase para Graficos Vectoriales
Posted: Fri Sep 16, 2022 11:35 AM

Gracias maestro,

Existe algun ejemplo en los samples de FWH?

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Clase para Graficos Vectoriales
Posted: Sat Sep 17, 2022 03:24 AM
Aqui tienes un ejemplo, para las lineas curvas tienes que usar Arc()
Code (fw): Select all Collapse
#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

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Clase para Graficos Vectoriales
Posted: Sat Sep 17, 2022 02:39 PM

WOW!!

Que potencia la de FWH.

Muchas gracuias maestro, probare lo de las curvas.

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 162
Joined: Tue Feb 03, 2009 10:08 PM
Re: Clase para Graficos Vectoriales
Posted: 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 2501, BCC++_x64 7_70 , Harbour 3.20, LopeEdit 5.8
jepsys@hotmail.com, jepsys@gmail.com

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Clase para Graficos Vectoriales
Posted: Wed Sep 21, 2022 06:16 AM
Cuesti贸n de matem谩ticas y de ir probando :-)
Code (fw): Select all Collapse
#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

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Clase para Graficos Vectoriales
Posted: 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 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Clase para Graficos Vectoriales
Posted: Wed Sep 21, 2022 01: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