Warum kein ImagesCollide im Menü?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Badudel

Betreff: Warum kein ImagesCollide im Menü?

BeitragSo, Nov 22, 2009 13:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

wie wir ja alle wissen, sollte man kein ImagesCollide in Menüs benutzen, sondern die X- und Y-Koordinaten direkt überprüfen.
Ich vertrete aber die Ansicht, dass in einem Menü sowieso nicht viel passiert; so viel Ressourcen kann man in einem durchscnittlichen Menü nicht verbrauchen, als dass man mit IC sein Programm langsamer machen könnte.

Selbstverständlich gehe ich nicht von einem Menü mit rechteckigen Buttons aus, sondern irgendwelche mit Transparenzen (Ellipsen, Buttons mit abgerundeten Ecken usw).
Bei solchen Menüs finde ich die Überprüfung der Koordinaten viel problematischer - bei runden siehts blöd aus, außerdem ist die Programmierung per IC einfacher.

Was meint ihr dazu?

Gruß, Badudel
Wir werden dem Schwein schon schlachten, auch wenn ihm quiekt.
Zum Teufel mit das Grammatik!

Tennisball

BeitragSo, Nov 22, 2009 13:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke, es geht nicht um Ressourcenverbrauch, sondern darum, dass bei manchen Grafikkarten ImagesCollide eine MAV bringt.

Starwar

BeitragSo, Nov 22, 2009 13:58
Antworten mit Zitat
Benutzer-Profile anzeigen
ImagesCollide macht Probleme bei vielen nVida-Grafikkarten.
Außerdem finde ich Abfrage über Koordinaten viel schöner Wink

EDIT: Lesen bildet nicht nur, sondern hilft auch dabei den Inhalt des vorherigen Posts wahrzunemen... Wenn das hier jemand löschen will, darf er es gerne tun.
MFG

Badudel

BeitragSo, Nov 22, 2009 14:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso... Ja dann ist das tatsächlich ein Problem... Das habe ich noch gar nicht mitbekommen.

Also gut, dann ist das also gar nicht grundlos... Schade.

Gruß
Wir werden dem Schwein schon schlachten, auch wenn ihm quiekt.
Zum Teufel mit das Grammatik!

Nicdel

BeitragSo, Nov 22, 2009 14:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst auch die Ersatzfunktion für ImageRectCollides von hier nehmen: https://www.blitzforum.de/foru...hp?t=27025
Die eignet sich für Buttons auch gut und ist nur wenig langsamer.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
 

da_poller

BeitragSo, Nov 22, 2009 14:31
Antworten mit Zitat
Benutzer-Profile anzeigen
für buttons, die in den meisten fällen rechtecke sind, nutze ich in der regel eine einfache mouseover funktion:

BlitzBasic: [AUSKLAPPEN]
Function MouseOver(Mouse_X,Mouse_Y,Pos_X,Pos_Y,Width,Height)
If Mouse_X>Pos_X And Mouse_Y>Pos_Y
If Mouse_Y<Pos_Y+Height And Mouse_X<Pos_X+Width
Return 1
EndIf
EndIf
Return 0
End Function


gruß
bernhard

Goodjee

BeitragSo, Nov 22, 2009 14:33
Antworten mit Zitat
Benutzer-Profile anzeigen
oder rectsoverlap
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/
 

BBPro2

BeitragMo, Nov 23, 2009 2:01
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn deine anwendung imagescollide verwendet ist es auch egal wenns probleme im menü gibt...
so lange die anwendung nicht funktioniert wie sie funktionieren soll macht auch ein funktionierendes menü nichts her...

und wenn du einen button in random form hast mit transparenz ist sicher eine koordinatenabfrage nicht das mittel zum zweck (bis gar "unmöglich")

resourcen etc sind im menü ohnehin kein problem..

edit:
was ist eine MAV?

Nicdel

BeitragMo, Nov 23, 2009 8:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Memory Access Violation, es wird auf etwas zugegriffen auf das man nicht zugreifen darf (oder das nicht exitstiert).
 

BBPro2

BeitragMo, Nov 23, 2009 10:20
Antworten mit Zitat
Benutzer-Profile anzeigen
ok... was es ausgeschrieben bedeutet ist mir klar

abkürzung hab ich dennoch noch nie gehört - und ich studiere informatik im 3. semester Wink
  • Zuletzt bearbeitet von BBPro2 am Mi, Nov 25, 2009 21:47, insgesamt einmal bearbeitet

Silver_Knee

BeitragMo, Nov 23, 2009 10:35
Antworten mit Zitat
Benutzer-Profile anzeigen
ist ja auch eine eingeführte von blitzbasic.. denke nicht dass man die im Studium beigebracht kriegt.

Eingeproggt

BeitragMo, Nov 23, 2009 11:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn Pixelgenaue Kollision mit dem Mauszeiger erforderlich ist so kann man IMagesCollide dennoch umgehen, mit folgender Vorgangsweise:

(Achtung, der Code wurde hier im Portal kurz nachn Aufstehen rein getippt, nicht getestet - aber geht ja darum dass ihr das Prinzip versteht)

Code: [AUSKLAPPEN]
;Zuerst ARGB-Farbwert der transparenten Stelle ermitteln, gleich nach dem Laden mit ReadPixel
;->Wert zwischenspeichern, ich nehme mal "transparent_col"
;Button-Abfrage, "button_img" sei hierbei das Image des buttons
If ReadPixel(MouseX(),Mousey(),ImageBuffer(buttin_img)<>transparent_col Then
  ;Maus über Button!
Endif


Ja, natürlich kann bzw. soll man auch hier Mousex(), Mousey() und Mousehit() vorher zwischenspeichern.
Ein LockBuffer und anschließendes ReadPixelFast zur schnelleren Durchführung empfehle ich nicht, da nur ein einziges Mal ReadPixelFast aufgerufen wird und ein eventueller Geschwindigkeitsvorteil gegenüber ReadPixel durch LockBuffer und dem danach benötigten UnLockBuffer sofort zunichte gemacht wird. Diese Befhele brauchen nämlich auch Zeit. Und man muss sie immer ausführen da man ein Bild mit gelocktem ImageBuffer nicht zeichnen kann.

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group