Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Foto im Programm

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
freeludwig



Anmeldungsdatum: 06.12.2007
Beiträge: 19

BeitragVerfasst am: 06.02.2008, 13:57    Titel: Foto im Programm Antworten mit Zitat

Hallo Freunde, können Sie mir hilfen bitte? Ich möchte im Programm das Foto oder das Bild haben, aber ich weiss nicht wo aus.
z.B.

screen 20,32
bload "xy.bmp"

Das ist gut, aber nur für Bild 1024x768.

Mein Ziel ist solcher: Screen 1024x768, aber das Foto oder das Bild nur z.B. 90x40 in der Ecke. Es ist möglich?

screen 20,32
bload "xy.bmp"
+ setscreen,window,view??

Ich weiss nicht. Aber diese Funktionen dafür funktionieren nicht...

Danke schön allem!
F.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 06.02.2008, 15:33    Titel: Antworten mit Zitat

Dazu hat Volta ein schönes Tutorial erstellt:
http://www.freebasic-portal.de/index.php?s=tutorials&id=16&seite=1

Code:
Screen 18,32
'Damit brauchst du den Dateinamen nur einmal angeben
Dim As String dateiname = "deinBild.bmp"
Dim As Integer breit, hoch 'darin speichern wir die Werte ab

Dim As Integer ff = Freefile    'Anfrage welcher Übertragungsweg ist frei?
Open dateiname For Input As #ff 'öffne die Datei zum lesen
Get #ff, 19, breit              'Breite aus der BMP-Datei auslesen
Get #ff, 23, hoch               'Höhe aus der BMP-Datei auslesen
Close #ff                       'schließe die Datei

Dim bild As Any Ptr             'Zeiger erstellen der die Bildadresse speichert
bild = ImageCreate(breit,hoch)  'reserviert und berechnet den erforderlichen Speicher
                      'und gibt an den Zeiger die Adresse des reservierten Speichers.
Bload dateiname, bild 'lade das Bild in den Speicher, der Zeiger 'bild' hat die Adresse.
Put (100,100), bild   'Das geladene Bild ab Position (x, y) im Fenster anzeigen
Sleep

(geht natürlich auch mit anderer SCREEN-Angabe und an anderer Bildschirmposition)

Nicht vergessen, am Schluss ein IMAGEDESTROY durchzuführen!
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
freeludwig



Anmeldungsdatum: 06.12.2007
Beiträge: 19

BeitragVerfasst am: 07.02.2008, 13:38    Titel: Antworten mit Zitat

Danke schön! Schon alles geht! Danke, F.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 07.02.2008, 13:55    Titel: Antworten mit Zitat

Danke @nemored,
für den Hinweis
Zitat:
Nicht vergessen, am Schluss ein IMAGEDESTROY durchzuführen!
ich habe es gleich ins Tut eingebaut happy .
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
freeludwig



Anmeldungsdatum: 06.12.2007
Beiträge: 19

BeitragVerfasst am: 11.02.2008, 14:42    Titel: Antworten mit Zitat

Mir das funktionieren auch ohne IMAGEDESTROY. Kein Problem forläufig. Warum benutzen ImageDestroy eigentlich?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Stormy



Anmeldungsdatum: 10.09.2004
Beiträge: 567
Wohnort: Sachsen - wo die schönen Frauen wachsen ;)

BeitragVerfasst am: 11.02.2008, 14:48    Titel: Antworten mit Zitat

ImageCreate = Speicher allokieren
ImageDestroy = Speicher freigeben

Wenn du dein Programm beendest, wird automatisch über das Betriebssystem der Speicher freigegeben. Wenn dein Programm allerdings zur Laufzeit immer viel Speicher allokierst, aber nicht freigibt, wird dir irgendwann der Speicher ausgehen.
_________________
+++ QB-City +++ Die virtuelle Stadt für jeden Freelancer - Join the community!
Projekte: QB-City,MysticWorld (RPG), 2D-OpenGL-Tutorial
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
freeludwig



Anmeldungsdatum: 06.12.2007
Beiträge: 19

BeitragVerfasst am: 12.02.2008, 17:31    Titel: Antworten mit Zitat

Stormy hat Folgendes geschrieben:
ImageCreate = Speicher allokieren
ImageDestroy = Speicher freigeben

Wenn du dein Programm beendest, wird automatisch über das Betriebssystem der Speicher freigegeben. Wenn dein Programm allerdings zur Laufzeit immer viel Speicher allokierst, aber nicht freigibt, wird dir irgendwann der Speicher ausgehen.


o.k., danke, ich verstehe... Aber dann ist also möglich IMAGEDESTROY benutzen ganz legitim erst und nur zum Ende Programm, oder nicht?
Z.B. Erst, wenn ein Mensch wählt QUIT = dort wird IMAGEDESTROY benutzte.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 12.02.2008, 17:52    Titel: Antworten mit Zitat

Das ist legitim, aber kein guter Programmstil. Man sollte grundsätzlich nur so viel Speicher allociieren, wie man auch benötigt, und alles andere möglichst bald wieder frei geben. Den Grund hat Stormy schon genannt.
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz