Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 06.06.2007, 14:21 Titel: BLoad |
|
|
Hi, da ich mich immernoch mit den verschiedensten Methoden beschöftige einen Font darzustellen aber auch herzustellen bzw konvertieren ect pp
hab ich mich gerade mit der eigentlich genialen draw string methode befasst,
ich habe also einen neuen Font erstellt, diesen ausgelesen und ihn in in
byte ptr / ImageCreate array geschrieben, soweit funktioniert auch alles...
nun hab ich es mit bsave gespeichert und wollte nun ein neuen Test machen mit den ganz einfachen zeilen
Code: |
screen 19
dim dfont as any ptr
bload "tunga-size2.bsf",dfont
DRAW STRING (0, 500), "Das ist ein Test, Hallo liebe FreeBASIC Gemeinde_",, dFont
sleep
|
Der Text wird angezeigt, das ist nicht das Problem, das Problem ist, das nach Bload (egal in welcher auflösung und ob als ubyte oder any ptr) die grafik auf den screen geklatscht wird...
woran liegt das ? _________________
 |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 06.06.2007, 14:49 Titel: |
|
|
vlt könnte es helfen, dfont erst mit imagecreate zu erstellen? _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 06.06.2007, 14:50 Titel: |
|
|
Danke,
(hätte ich die such-funktion benutzt wäre ich vermutlich auch drauf gekommen)
konnte es erstmal so lösen
Code: |
screen 19,32
dim dfont as ubyte ptr
Function IsFile ( DataFile As String) As Integer
Dim As Integer F
F = Freefile
Open DataFile For Input As #F
Function = Lof(F)
Close #F
If Err <> 0 Then
Print "Datei "+DataFile+" nicht gefunden !"
Sleep
End
End If
End Function
dFont = Allocate(IsFile ("tunga-size2.bsf"))
bload "tunga-size2.bsf",dfont
DRAW STRING (0, 500), "Das ist ein Test, Hallo liebe FreeBASIC Gemeinde_",, dFont
sleep
|
leider kann ich so den font nur auf der selben auflösung und farbtiefe nutzen wie ich ihn gespeichert habe... geht wohl nichts über ein eigenes Format... _________________
 |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 06.06.2007, 14:51 Titel: |
|
|
ja, grafikpuffer kann man immer nur in der sleben farbtiefe benutzen... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 06.06.2007, 15:05 Titel: |
|
|
eine ganz andere Frage (ohne neuen Thread )
wie rechne ich einen r,g,b wert in 16bit um ??? und umgekehrt natürlich ?! _________________
 |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 06.06.2007, 15:08 Titel: |
|
|
1) mit farbe = rgb(r,g,b)
2) farbe = r + 256 * g + 65536 * b _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 06.06.2007, 15:19 Titel: |
|
|
hmm. ok.. funktioniert soweit.. aber ganz verstehen tu ichs nicht... da mir bei 16bit doch eigentlich nur 65536 Farben zur verfügung stehen ?!
also 16bit eigentlich 2 byte wie kann ich da einen farbwert höher als &hffff angeben ?!?! versteh ich nu nicht... _________________
 |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 06.06.2007, 15:52 Titel: |
|
|
also: wenn du RGB benutzt, ist das auch (wie mein beispiel) 32 bit (farbgenauigkeit 0 bis 255). wenn du einen 16 bit screen (farbgenauigkeit 0 bis 63 glaub ich) verwendest, werden nur die "zweischenstufen" ausgelassen  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 06.06.2007, 16:14 Titel: |
|
|
Ich behaupte einfach mal es verstanden zu haben
werd ein wenig damit herum experimentieren... meine Fonts sollen nämlich auch unabhängig vom screenmode funktionieren.... _________________
 |
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 06.06.2007, 17:33 Titel: |
|
|
Jojo hat Folgendes geschrieben: | ja, grafikpuffer kann man immer nur in der sleben farbtiefe benutzen... |
Nein, soweit ich weiß geht es mittlerweile auch anders.
Imagecreate
Und siehe da, ich habe Recht
Man kann angeben, welche Farbtiefe das Bild hat _________________
Code: | #include "signatur.bi" |
|
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 06.06.2007, 17:34 Titel: |
|
|
hab in FB schon lang nix mehr gemacht in richtung grafik...  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 06.06.2007, 19:07 Titel: |
|
|
Zitat: |
ImageCreate( width as integer, height as integer [, [ color as uinteger ] [, depth as integer ]] ) |
super sache
scheint mit der 0.17 aber leider noch net zu funktionieren... _________________
 |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 06.06.2007, 19:49 Titel: |
|
|
nein, eben nicht.
0.18 ist nur CVS, also nicht offiziell. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 06.06.2007, 20:00 Titel: |
|
|
naja... ist eigentlich auch nur halb so wichtig.. denn das problem mit der farbtiefe jedenfalls hab ich dadurch das ich ein eigenes Format benutze gelöst *glaub* nur hab ich da ein riesen fehler drinne den ich gerade einfach nicht finden kann, so das ich statt fonts im besten Fall nur zeichensalat habe  _________________
 |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 06.06.2007, 20:03 Titel: |
|
|
Hi Eternal_pain,
doch sollte mit der Version FB017b funktionieren (zumindest bei 32bpp).
und Code: | 'RGB32bit > RRRRRrrrGGGGGGggBBBBBbbb
'RGB16bit > 00000000RRRRRGGGGGGBBBBB
RGB16bit = ((RGB32bit and &HF80000) Shr 8) + _
((RGB32bit and &H00FC00) Shr 5) + _
((RGB32bit and &H0000F8) Shr 3)
'oder aus r,g,b je 8bit
RGB16bit = ((r and &HF8) Shl 8) + _
((g and &HFC) Shl 3) + _
((b and &HF8) Shr 3)
--------------------------------------------------------
'RGB16bit > 00000000RRRRRGGGGGGBBBBB
'RGB32bit > RRRRR000GGGGGG00BBBBB000
RGB32bit = ((RGB16bit and &HF800) Shl 8) + _
((RGB16bit and &H07E0) Shl 5) + _
((RGB16bit and &H001F) Shl 3)
'oder zu r,g,b
r = (RGB16bit and &HF800) Shr 8
g = (RGB16bit and &H07E0) Shr 3
b = (RGB16bit and &H001F) Shl 3
|
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 11.06.2007, 11:14 Titel: |
|
|
Hab gerade eine kleine schwierigkein mit ImageCreate
Laut Hilfe (dieses mal hab ich vorher auch in die neue geguckt )
stehen in den ersten 4 Bytes die höhe und breite imformationen,
aber irgendwie mach ich einen fehler beim auslesen, oder hat sich da vielleicht doch wieder was geändert ?!
Ich bekomme jedes mal die werte 7 und 0
Code: |
Screen 19,32
Dim test as any ptr
Dim breite as ushort
Dim hoehe as ushort
test=ImageCreate(100,100)
breite = Peek (Ushort,test)
hoehe = Peek (Ushort,test+2)
?breite, hoehe
sleep
|
bei der Methode das gleiche:
Code: |
Screen 19,32
Dim test as ubyte ptr
test=ImageCreate(333,111)
?(test[1]*&h0100)+test[0],(test[3]*&h0100)+test[2]
sleep
|
_________________
 |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 16.06.2007, 22:20 Titel: |
|
|
Du musst eine ältere Version der Hilfe haben... ode rich habe das noch nicht geupdatet. Seit FB v0.17 (oder schon früher? Nein, ich glaube es war 17) hat ein FB-Bild einen neuen Header. Er ist 32 Bytes lang, und hat dieses Format:
Code: | '' Image buffer header, old style
''
type _OLD_HEADER field = 1
bpp : 3 as ushort
width : 13 as ushort
height as ushort
end type
'' Image buffer header, new style (incorporates old header)
''
type IMAGE field = 1
union
old as _OLD_HEADER
type as uinteger
end union
bpp as integer
width as uinteger
height as uinteger
pitch as uinteger
_reserved(1 to 12) as ubyte
' '' properties
' declare property pixels() as ubyte ptr
end type |
(Aus der fbgfx.bi, Namespace FB.)
Hope, it helped.
Have a nice day
Ciao
Dusky_Joe _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
|