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:

Probleme mit GetPixel

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



Anmeldungsdatum: 21.02.2008
Beiträge: 17

BeitragVerfasst am: 13.03.2008, 19:23    Titel: Probleme mit GetPixel Antworten mit Zitat

Hallo, ich habe mal einen Code gebastelt:
Code:
#Include "windows.bi"

Dim As ColorRef PixelFarbe
Dim As Hwnd FensterHwnd
Dim As HDC FensterDC
Dim As Integer X, Y
Dim As Byte B

FensterHwnd = FindWindow(0, StrPtr("<FensterName>"))
FensterDC = GetDC(FensterWnd)
Do
    Sleep 1
    For X = 492 To 1186 Step 3
        For Y = 240 To 632 Step 3
            PixelFarbe = GetPixel(FensterDC, X, Y)
            B = GetBValue(PixelFarbe)
            Print B
        Next Y
    Next X
Loop

Es gibt nur das kleine Problem, dass mir B anstatt den blauen Farbanteil immer -1 zurück gibt, auch wenn er das Fenster gefunden hat...
Wenn ich aber die Do-Loop und For-Next Schleifen raus lasse und anstatt X und Y bei GetPixel Werte eintrage gibt er mir die richtigen Farbanteile wieder, warum?happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 13.03.2008, 20:03    Titel: Antworten mit Zitat

Du solltest erstmal dein FreeBASIC auf version 0.18.3 aktualisieren, dann wäre der Fehler nicht passiert. (Falls du schon die aktuelle Version benutzt, dann schalte den deprecated-modus aus).

Code:
#INCLUDE "windows.bi"

DIM AS ColorRef PixelFarbe
DIM AS Hwnd FensterHwnd
DIM AS HDC FensterDC
DIM AS INTEGER X, Y
DIM AS UBYTE B

FensterHwnd = FindWindow(0, STRPTR("<FensterName>"))
FensterDC = GetDC(FensterHwnd)
DO
    SLEEP 1
    FOR X = 492 TO 1186 STEP 3
        FOR Y = 240 TO 632 STEP 3
            PixelFarbe = GetPixel(FensterDC, X, Y)
            B = GetBValue(PixelFarbe)
            PRINT B
        NEXT Y
    NEXT X
LOOP

Erstert Fehler:
Zitat:
FensterDC = GetDC(FensterHwnd)

das "H" hat gefehlt. Wäre bei den neuen FB-Versionen bzw im strict-modus nicht passiert.
Wenn das H drin ist, kommt z.T. immer noch -1 raus, was daran liegt, dass du für die Variable B den Byte-Datentyp verwendest, der Werte von -128 bis 127 zulässt. Verwende Ubyte für Werte von 0 bis 255 zwinkern
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen 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