Grafik unsichtbar erzeugen

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Gesperrt
Benutzeravatar
Josef Stockinger
UDF-Programmierer
UDF-Programmierer
Beiträge: 53
Registriert: So, 25. Sep 2005 18:06
Wohnort: Nähe Regensburg
Kontaktdaten:

Grafik unsichtbar erzeugen

Beitrag von Josef Stockinger »

Hallo Forum,

wie kann ich diese Grafik unsichtbar erzeugen? Also nur zum Speichern in einer JPG-Datei benutzen?

Beste Grüße
Josef

Code: Alles auswählen

#include "AppEvent.ch"
#include "Gra.ch"
#include "Xbp.ch"


#define nVL             aLocals[01]
#define nVwlST          aLocals[02]
#define nVwlSV          aLocals[03]
#define nVwlNE          aLocals[04]
#define oDlg            aLocals[05]
#define oDraw           aLocals[06]
#define oPS             aLocals[07]
#define oBmp            aLocals[08]
#define oPS2            aLocals[09]


PROCEDURE AppSys()
return

PROCEDURE Main()
   LOCAL aLocals[10]
   LOCAL nEvent, mp1, mp2, oXbp

   nVL    := 30.00
   nVwlST := 10.00
   nVwlSV := 6.00
   nVwlNE := 14.00

   if fexists("VWL1.JPG")
      ferase( "VWL1.JPG" )
   endif

   oDlg  := XbpDialog():new(AppDesktop(),,{300,200,}, {92,304,})
   oDlg:taskList := .t.
   oDlg:minButton := .f.
   oDlg:maxButton := .f.
   oDlg:create()
   oDraw := oDlg:drawingArea
   oPS   := XbpPresSpace():new():create( oDraw:winDevice() )
   oDraw:paint := {|| DrawChart( oPS, aLocals, 1.0 )  }

   nEvent := xbeP_None
   do while nEvent != xbeP_Close .and. nEvent != xbeK_ESC
      nEvent := AppEvent( @mp1, @mp2, @oXbp )
      oXbp:handleEvent( nEvent, mp1, mp2 )
   enddo

   oBmp := XbpBitmap():new():create()
   oPS2 := XbpPresSpace():new():create()
   oBmp:presSpace( oPS2 )
   oBmp:make( oDraw:currentSize()[1], oDraw:currentSize()[2] )
   GraBitBlt( oPS2, oPS, {0,0, oBmp:xSize, oBmp:ySize},;
                         {0,0,oDraw:currentSize()[1], oDraw:currentSize()[2] } )
   oBmp:saveFile( "VWL1.JPG", XBPBMP_FORMAT_JPG, 0 )
   oPS:destroy()
   oPS2:destroy()

return



STATIC FUNCTION DrawChart( oPs, aLocals, nZoom )
   LOCAL aAttr, nNetCol, nSteCol, nSveCol, nAgzCol, nStrCol, nStr1Col, oFont, oFont2

/* --- Nullpunkt fuer X- und Y-Achse --- */
   LOCAL nX0 := 0, nY0 := 0

/* --- Relative Maxima fuer x und y --- */
   LOCAL nXmax := 82 * nZoom, nYmax := 278 * nZoom

/* --- Farben --- */
   LOCAL aColor := { {0,100,0}, {255,255,0}, {160,0,0}, {0,0,200} }

/* --- Fuellmuster --- */
   LOCAL aSymbols := { GRA_SYM_DENSE4, GRA_SYM_DENSE5, GRA_SYM_DENSE6  ,;
                       GRA_SYM_DENSE7, GRA_SYM_SOLID,  GRA_SYM_HALFTONE,;
                       GRA_SYM_DIAG1,  GRA_SYM_DIAG3  }

/* --- Multiplikator f
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16511
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Josef,
hast Du mal versucht, die Grafik auf einem versteckten XbpStatic zu "malen"?
Viele Grüße,
Martin
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9361
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Genau. Oder den kompletten Dialog unsichtbar erzeugen:

oDlg:visible := .F.

Habe allerdings noch nie probiert, was GraBitBlt() mit einem unsichtbaren Presentation Space macht.
Herzlich,
Tom
Benutzeravatar
Josef Stockinger
UDF-Programmierer
UDF-Programmierer
Beiträge: 53
Registriert: So, 25. Sep 2005 18:06
Wohnort: Nähe Regensburg
Kontaktdaten:

Grafik unsichtbar erzeugen

Beitrag von Josef Stockinger »

Hallo Martin und Tom,

vielen Dank für Eure Tips. Recht weit kam ich aber nicht, deswegen habe ich das mal zu Alaska-Support gegeben. Die Lösung liegt vor und ich habe alles noch soweit verkürzt, daß nur noch das Schreiben der Grafik in eine Datei Kernstück ist.

Viele Grüße
Josef

Code: Alles auswählen

#include "AppEvent.ch"
#include "Gra.ch"
#include "Xbp.ch"

#define nVL             aLocals[01]
#define nVwlST          aLocals[02]
#define nVwlSV          aLocals[03]
#define nVwlNE          aLocals[04]

PROCEDURE AppSys()
RETURN

PROCEDURE Main(cPar)
   LOCAL aLocals[10]
   LOCAL nEvent, mp1, mp2, oXbp

   nVL    := 30.00
   nVwlST := IF( cPar == '0',  0.00, 10.00 )
   nVwlSV := IF( cPar == '0',  0.00,  6.00 )
   nVwlNE := IF( cPar == '0', 30.00, 14.00 )

   ferase( IF(cPar=='0',"VWL2.JPG","VWL1.JPG") )

   _oPS2 := XbpPresSpace():new():create()
   _oBmp := XbpBitmap():new():create(_oPS2)
   _oBMP:PresSpace(_oPS2)
   _oBmp:make( 83 , 279 )

   DrawChart( _oPS2 , aLocals, 1.0 )

   _oBmp:saveFile( IF(cPar=='0',"VWL2.JPG","VWL1.JPG"), XBPBMP_FORMAT_JPG, 0 )

RETURN



STATIC FUNCTION DrawChart( oPs, aLocals, nZoom )
   LOCAL aAttr, nNetCol, nSteCol, nSveCol, nNulCol, oFont

/* --- Nullpunkt fuer X- und Y-Achse --- */
   LOCAL nX0 := 0, nY0 := 0

/* --- Relative Maxima fuer x und y --- */
   LOCAL nXmax := 82 * nZoom, nYmax := 278 * nZoom

/* --- Farben --- */
   LOCAL aColor := { {255,255,255}, {255,255,0}, {160,0,0}, {0,0,200} }

/* --- Multiplikator f
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16511
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Josef,
vielen Dank für das posten Deiner Lösung!

Viele Grüße,
Martin
Gesperrt