|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
jbaben
Anmeldungsdatum: 30.10.2017 Beiträge: 3 Wohnort: SA-Nelspruit
|
Verfasst am: 30.10.2017, 17:10 Titel: Figur, Symbol erstellen |
|
|
Hallo,
für mein aktuelles Projekt (Wahrnehmungs-Spiel) benötige ich eine Figur zum Anzeigen und anschließend 6 weitere Figuren um aus diesen Figuren die erste angezeigte Figur auszuwählen.
In meinem Programm (erstellt vor ca. 35 Jahren) habe ich folgenden Zahlencode verwendet: Chr$(131, 140, 143, 176, 179, 188, 191)
Dieser Zahlencode erzeugte, so weit ich mich erinnere, verschiedene Rechtecke, aus denen dann die verschiedenen Figuren zusammen gesetzt wurden.
Jetzt erzeugt der Zahlencode (ASCII-Zeichen) Symbole aus denen ich keine vernüftige Figur erstellen kann.
Wie könnte ich unter FreeBasic eine Figur z.B aus verschiedenen Rechtecken erzeugen ?
MfG
Juergen B. _________________ z.Z. FreeBASIC unter WINDOWS 10 Pro 64 Bit |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4637 Wohnort: ~/
|
Verfasst am: 30.10.2017, 22:58 Titel: |
|
|
Das Problem ist, dass die dargestellten Zeichen für ANSI-Zeichen > 127 vom eingestellten Zeichensatz abhängen. Im Konsolenmodus ist das abhängig von der Konsoleneinstellung; ich kann keine Garantie darauf geben, dass diese unter Windows immer gleich ist (Linux verwendet, im Gegensatz zu Windows, in der Regel UTF8). Im Grafikfenster verwendet FreeBASIC eine andere ANSI-Codierung, diese ist dafür immer dieselbe (CP437). Hier hast du ein Programm zum Anzeigen der Zeichen:
https://www.freebasic-portal.de/code-beispiele/kleine-helferlein/ascii-tabelle-anzeigen-lassen-2.html
Aber mit den Grafikbefehlen wäre man sehr viel flexibler als mit Schrift-Rahmenzeichen. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
jbaben
Anmeldungsdatum: 30.10.2017 Beiträge: 3 Wohnort: SA-Nelspruit
|
Verfasst am: 31.10.2017, 16:44 Titel: |
|
|
Hallo,
vielen Dank für die Antwort.
Ich werde mich jetzt mal mit den Grafikbefehlen beschäftigen.
MfG
Juergen B. _________________ z.Z. FreeBASIC unter WINDOWS 10 Pro 64 Bit |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 31.10.2017, 18:09 Titel: Abbildungen als Bilddatei laden |
|
|
Hi Jürgen,
willkommen im Forum!
In FreeBASIC kannst du auch einfach externe Bitmaps laden. Von daher müsstest du gar nicht mehr mit "ASCII-Art" zeichnen, sondern könntest mit einem beliebigen Bildbearbeitungsprogramm irgendwelche Formen zeichnen.
Hier mal ein (sicher nicht optimiertes) 5-Minuten-Beispiel:
Code: | Function max( a as double, b as double ) as double
If ( a > b ) Then
Return a
ElseIf ( a < b ) Then
Return b
End If
Return a
End Function
Const PI As Double = 3.14159265359
ScreenRes 800, 600, 24, 2
Dim As Any Ptr bild
bild = ImageCreate(100, 100) 'Pixelgroesse des Bildes
BLoad ExePath + "\sonne.bmp", bild
Dim As Integer x, y
Dim As Double r=0, g=0, b=0
Dim as Double stepR = 176/400.0#, _
stepG = 224/400.0#, _
stepB = 244/400.0#
For x As Integer = 0 To 800
y = 600 - sin( x/700.0#*PI ) * 600
ScreenSet 2, 1
Line (0,0)-(799,599), RGB(Int(r),Int(g),Int(b)), BF
PUT (x, y), bild, TRANS
ScreenSet 1, 1
ScreenSync
Flip 2, 1
If ( x <= 399 ) Then
r += stepR
g += stepG
b += stepB
Else
r = Max( r-stepR, 0 )
g = Max( g-stepG, 0 )
b = Max( b-stepB, 0 )
End if
Sleep 1
Next
end 0 |
Die Bilddatei "sonne.bmp" bitte im gleichen Verzeichnis speichern wie den Quelltext:
https://www.freebasic-portal.de/sst/sonne.bmp
Das Rosa ist die standardmäßige Maskenfarbe, d. h. wenn man bei PUT TRANS verwendet, werden die rosanen Bereiche transparent.
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
jbaben
Anmeldungsdatum: 30.10.2017 Beiträge: 3 Wohnort: SA-Nelspruit
|
Verfasst am: 31.10.2017, 18:10 Titel: |
|
|
Hallo,
zu den Grafikbefehlen habe ich folgende Frage:
Wenn ich zum Beispiel mit:
Code: |
LINE (140, 140)-(150,200), 0, BF
|
ein Rechteck erzeuge, wird diese ja direkt angezeigt.
Wie genau lautet die Syntax wenn ich das Rechteck z.B. als Figur(1) speichern möchte ?
MfG
Juergen B. _________________ z.Z. FreeBASIC unter WINDOWS 10 Pro 64 Bit |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4637 Wohnort: ~/
|
Verfasst am: 31.10.2017, 19:43 Titel: |
|
|
Du kannst mit IMAGECREATE einen Bildpuffer erstellen und dann direkt in diesen hineinzeichnen.
Code: | #include once "fbgfx.bi" ' für das UDT FB.Image
screenres 800, 600, 32 ' 32-Bit-Farbmodus
dim as FB.Image ptr Figur(5)
Figur(1) = imagecreate(200, 200, 0) ' Bildspeicher reservieren
line Figur(1), (140, 140)-(150,200), rgb(255, 0, 0), BF ' in den Bildpuffer speichern
put (200, 200), Figur(1) ' Bildpuffer anzeigen
imagedestroy Figur(1) ' Speicherplatz freigeben
sleep |
Weil schwarzes Rechteck auf schwarzem Grund jetzt schlicht aussah, habe ich als Farbe Rot genommen; da sieht man dann auch gleich mal den 32-Bit-Farbraum. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|