Screenshot/führenden Nullen/Kollisionspunktermittlung von ??? |
Hier ein paar Funktionen aus [url=http://www.blitzforum.de/viewtopic.php?t=2008]"Vollgas!"[/url]. Vielleicht ist ja was für den ein oder anderen dabei... [code:1:18a4859911] ;Fuegt in einen Dateinamen vor dem Punkt eine Nummer ein ;GenFile$ = Dateiname ;PicCount = Nummer ;RETURN = neuer Dateiname Function CalcFileName$(GenFile$,PicCount) Local pre$,pos$ pre$ = Left (Genfile$,Instr (GenFile$,".")-1) pos$ = Right (Genfile$,Len (GenFile$)-Instr (GenFile$,".")+1) Return pre$ + PicCount + pos$ End Function ;Erstellt einen Screenshot im aktuellen Ordner mit laufender Nummerierung ;Alte Screenshots werden nicht ueberschrieben ;RETURN$ = Dateiname des Screenshots Function ScreenShot$() Local PicCount%,File$ Repeat File$ = CalcFileName$("shot.bmp",PicCount%) PicCount% = PicCount% + 1 Until Not FileType (File$) SaveBuffer FrontBuffer(), File$ Return File$ End Function ;Wandelt einen Integer in einen String mit fuehrenden Nullen um ;Bei Bedarf kann auch ein anderes Zeichen vorangestellt werden ;Num% = Nummer ;Length% = Laenge ;LeftChar$ = optionales, anderes Fuehrungszeichen ;RETURN$ = Wert als String Function Int2String$(Num%, Length%, LeftChar$ = "0") Return Replace(RSet$(Str$(Num%), Length%)," ", LeftChar$) End Function ;Ermittelt eine Kante eines Bildes im Bezug auf die Bildposition ;Image% = Handle des Bildes ;Position% = X- bzw. Y-Position des Bildes ;GreaterValue% = gibt an ob die linke bzw. obere Kante(Wert=0) oder die ; rechte bzw. untere Kante (Wert=1) zurueckgeliefert werden soll ;Vertical% = gibt an ob die horizontale Kante(Wert=0) oder ; vertikale Kante zurueckgeliefert werden soll ;RETURN = X- bzw. Y-Wert der Kante Function CalcEdge(Image%,Position%,GreaterValue%,Vertical%) If GreaterValue% Then GreaterValue% = 1 If vertical% Then Return Position% + ImageHeight(Image%) * GreaterValue% - ImageYHandle(Image%) Else Return Position% + ImageWidth(Image%) * GreaterValue% - ImageXHandle(Image%) EndIf End Function ;Ermittelt den "Kollisionspunkt" zwischen zwei Bildern ;Es wird nicht geprueft ob die Bilder ueberhaupt kollidieren ;Pos1% = X- bzw. Y-Position des ersten Bildes ;Image1% = Handle des ersten Bildes ;Pos2% = X- bzw. Y-Position des zweiten Bildes ;Image1% = Handle des zweiten Bildes ;Vertical% = gibt an ob die X-Koordinate(Wert=0) oder die Y-Koordinate(Wert=1) ; des Kollisionspunktes zurueckgeliefert werden soll ;RETURN = X- bzw. Y-Wert der Kante Function CalcCollPos(Pos1%, Image1%, Pos2%, Image2%, Vertical%) If Pos1% >= Pos2% Then P1_GE_P2% = 1 Return (CalcEdge(Image1%,Pos1%,Not(P1_GE_P2%),Vertical%) + CalcEdge(Image2%,Pos2%,P1_GE_P2%,Vertical%)) / 2 End Function [/code:1:18a4859911] [url=http://www.mein-murks.de/quellcode/funktion.bb]und hier noch der Download als BB-File[/url] |