|
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 |
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 05.02.2006, 15:11 Titel: Grafiklib selbst machen |
|
|
Hallo
Ich hab mal versucht das mir eine lib ein .bmp-Bild öffnet und auf den Bildschirm bringt. Allerdings kommt das nicht ins Fenster in das es soll.
Also mal ein Bsp.:
Screen 20,32
bild$="c:\test.bmp"
bloadlib(bild)
So in etwa. Also die Datenübergabe funzt auch wunderbar aber das Bild erscheint halt nicht.
Dafür muss ich in der lib selbst eine Screen aufrufen.
Aber in den kann ich von meinem Programm dann wieder nicht reinmalen/schreiben.
Wie kann ich das also machen?
noop |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 05.02.2006, 16:01 Titel: |
|
|
a) bild ohne lib laden
oder
b) auch die malroutinen aus der lib benutzen
oder
c) versuchen, das mit der lib geladene bild mit PUT auf den bildschirm zu hacken
oder
d) ne andere lib nehmen.
ich empfehle a,b oder d.. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 05.02.2006, 18:50 Titel: |
|
|
Hallo.
Das geht ganz einfach auch mit Screen:
So wird kein Fenster geöffnet, aber du kannst Bload etc. verwenden.
Michael _________________
Code: | #include "signatur.bi" |
|
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 05.02.2006, 18:59 Titel: |
|
|
Also der Namen der Lib wäre Interresant, ohne ist es ein raten in's Blaue.
@programmierer
Liess bitte die Frage ...
Er will nicht das Fenster verstecken, sondern ein Bild in ein Fenster ausgeben ... _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 07.02.2006, 18:03 Titel: Bild aus einer BMP-Datei anzeigen |
|
|
Bild aus einer BMP-Datei anzeigen.
Eine einfache Möglichkeit eine BMP-Bild-Datei anzuzeigen ist:
Code: | Screen 15,32 'Bit per Pixel = 32
BLoad "bruno.bmp" 'BMP-Datei anzeigen
Sleep |
Das Bild wird in der linken oberen Ecke des Screens angezeigt und steht erstmal im weiteren Programm für eine Bearbeitung nicht zur Verfügung.
Eine der einfachsten Methoden in FB ein Bild auf den Screen zu positionieren ist mit Image - Anweisungen zu arbeiten.
imagepointer = IMAGECREATE (Breite, Höhe [, Farbe])
Damit wird ein Speicherbereich reserviert (Breite * Höhe) in dem ein Bild dieser Größe geladen werden kann. Der 'imagepointer' zeigt auf die erste reservierte Speicherstelle.
IMAGEDESTROY imagepointer
Gibt den reserviert Speicherbereich wieder frei.
Die Erklärungen hier sind sehr einfach gehalten.
Genaueres findest du in die Befehlsreferenz.
BMP in Image laden und anzeigen
Höhe und Breite des Bildes müssen uns hier vorher bekannt sein
Code: | Option Explicit
Dim img As Integer Ptr
Dim As Integer breit, hoch
Screen 18,32 'Bit per Pixel = 32
breit = 52 'Bildbreite und
hoch = 86 'Bildhöhe sind bekannt
img = ImageCreate (breit, hoch) 'Image bilden
BLoad "bruno.bmp",img 'BMP-Datei in das Image laden
Put (40, 50), img, PSet 'Image anzeigen
Print "mit Tastendruck geht’s weiter.. ";
Sleep
Print "kleiner Effekt!"
Put (100, 50), img, PSet 'Image anzeigen
'um einen Pixel nach rechts versetzt Image
'erneut mit XOR verknüpft anzeigen
Put (101, 50), img, Xor
Sleep
ImageDestroy img 'Image aus dem Speicher löschen
End |
Der 'kleiner Effekt' ist hier nur ein Gag, es lohnt sich aber mit den PUT-Optionen zu
spielen. Schau dazu mal in die Befehlsreferenz.
Breite und Höhe des Bildes aus der BMP-Datei
Nicht immer sind Breite und Höhe vorher bekannt, man kann sie auch aus der BMP-Datei auslesen.
Code: | 'Shared Variablen sind auch in Unterprogrammen nutzbar
Dim Shared As Integer breit, hoch
Dim As Integer Ptr img
'liest Breite und Höhe des Bildes aus der BMP-Datei
Function test_bmp (filename As String) As Integer
Dim ff As Integer, ID As Short
test_bmp = 0
ff = FreeFile
Open filename For Binary Access Read As #ff
If lof(ff) > 40 Then
Get #ff,0,ID 'Test auf "BM" am Anfang der Datei
If ID = asc("B") + (asc("M") shl 8) Then
Get #ff, 19, breit 'Bildbreite
Get #ff,, hoch 'Bildhöhe
test_bmp = 1 'Werte gefunden
End If
End If
Close #ff
End Function
Screen 15, 32 'Bit per Pixel = 32
If test_bmp("bruno.bmp") Then 'wenn Höhe und Breite gefunden wurden
img = ImageCreate (breit, hoch) 'Image bilden
BLoad "bruno.bmp",img 'BMP-Datei in das Image laden
Put (10, 20), img, PSet 'Image anzeigen
Else
Print "Keine BMP-Datei gefunden."
End If
Print "mit Tastendruck beenden.. ";
Sleep
'Image aus dem Speicher löschen, wenn es erstellt wurde.
If img > 0 Then ImageDestroy img
End |
Eine Zip-Datei, in der die BAS- und BMP-Dateien enthalten sind, gibt es (demnächst) auf meiner Homepage.
Gruß
Volta _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
|
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 23.02.2006, 14:25 Titel: |
|
|
sry
Hatte was Stress inder Schule und hab vergessen, dass ich hier noch was am laufen hab...
So da bin ich aba wida.
Die lib mach ich selbst.
Das ist keine runtergeladene lib!
Das war auch nur ein Beispiel mit dem Bildladen.
Ich will vllt mal eine eigene Grafiktextlib machen.
An die soll dann Buchstabe/Ziffer,Buchstabengröße,X&Y-Koordinate und Farbe übergeben werden und die "malt" es dann auf den Bildschirm.
Wie ich normal ein bmp-Bild anzeige weiß ich, auch wie ich es bearbeiten kann. Damit hab ich in letzter Zeit relativ viel mit rumexperimentiert.
Und jetzt wollte ich das halt etwas automatisieren und in eine lib bringen. |
|
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.
|
|