Bitmap Farben(tiefe) in XbpBrowse:dataArea

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Bitmap Farben(tiefe) in XbpBrowse:dataArea

Beitrag von AUGE_OHR »

hi,

Frage : wie viele Farben kann ich in einer XbpBrowse "Cell" anzeigen
wenn ich ein Bitmap verwende ?

wenn ich das richtig verstehe : Eine XbpCellGroup() created ein XbpStatic
welches den Inhalt eine "Cell" anzeigt.

wenn ich nun ein "normales" XbpStatic erzeuge kann ich das selbe Bitmap
aus der *.FPT Datenbank ohne Color Problem anzeigen ?!

so was könnte der Unterschied sein wenn das selbe Bitmap die Farben
in einem XbpBrowse / XbpCellgroup / XbpStatic falsch anzeigt ?

es sieht aus wie 4-bit Farbe Artefakte ... ( 170x128 = 4:3 16-bit BMP)

gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Beitrag von AUGE_OHR »

hi,

Ich habe nun in der Richtung weiter gemacht und bislang keine Möglichkeit
gefunden mit einem "normalen" XbpBrowse die Bitmaps ohne Fehlfarben
darzustellen. Auch mit der ersten Version des Bitmap Browser von Diego
hat das selbe Problem wenn ich eine "bestimmte" Grösse überschreite.

Jedoch geht es mit der "frameless Cell" Version, welche ja das "übliche"
XbpStatic in der XpbCellgroup "disable"lt und darüber ein neues XbpStatic
legt auf der man ein "volles" Bitmap anzeigen kann.

Nun hab ich es zuerst für ein Array ausgelegt gehabt, d.h. im Array sind
jeweils Bitmap Objecte vorhanden, deshalb musste ich die :setdata
Methode anpassen. Um einen :datalink zu einem Memo (type "V") her-
zustellen musste ich jetzt also in den :datalink eine Funktion schreiben.

Nun hab ich damit volle, fehlerfreie Anzeige der Bitmaps mit 2 Neben
Effekten :
1.) es funktioniert nun auch mit JPG
2.) es ist 1000% (!!!) schneller
... und genau das irretiert mich ... wieso so viel schneller, den beides
Mal führe ich praktisch den selben Code aus ?

Code: Alles auswählen

...
   oCol:dataLink  := {|| WM9MARK->BILDIN }
...
METHOD XbpBitmapStatic:setData( xData )
LOCAL oBmp:= XbpBitmap():new():create()
    oBmp:setBuffer( xData )
*    ::XbpStatic:setCaption( oBmp )
    ::_oBmp:setCaption( oBmp )
    oBmp:destroy()
RETURN .T.
gegen

Code: Alles auswählen

...
   oCol:dataLink  := {|| Load2Obj(WM9MARK->BILDIN) }
...
STATIC FUNCTION Load2Obj( xdata )
LOCAL oBitmap  := XbpBitmap():new():create()
   IF EMPTY( xData )
...
   ELSE
      oBitmap:SetBuffer( xdata , XBPBMP_FORMAT_JPG,50)
   ENDIF
RETURN oBitmap
...
METHOD XbpBitmapStatic:setData( xData )
    // while item in Array is allready a Bitmap Object
    // just setcaption
    ::_oBmp:setCaption( xData )
RETURN .T.
während bei der ersten Methode das "laden dauert" geht es mit der
2st Methode "sofort" so das man locker per Wheel im Browser navigieren
kann.

Da ich auch auf JPG umstellen konnte, ist die *.FPT von 301MB auf 21MB
geschrumpft sodas wohl auch deutlich weniger Daten "transferiert" werden
als vorher, aber macht das dann auch soviel an Geschwindigkeit aus oder
liegt es doch am verwendeten Code ?

gruss by OHR
Jimmy
Antworten