Ich bin zu doof - aber Bild bleibt nich da wo es sein soll!

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

ReLeNtLeSS

Betreff: Ich bin zu doof - aber Bild bleibt nich da wo es sein soll!

BeitragMi, Okt 03, 2007 15:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Repeat

Color 0,0,0
Rect 0,0,100,600
Color 255,255,255
Rect 100,0,800,600

If MouseDown(1)=True Then
Color 255,0,255
DrawImage mouse,500,500
EndIf

DrawImage mouse,MouseX(),MouseY()
Flip
Until KeyHit(1)


Heyho, ich frage mich grade warum das bild (mouse) nur solange auf dem bildschirm bleibt, wie ich die taste drücke. es soll stehen bleiben. aber genua das tut es ja nich. warum? ich hab sämtliches probiert!
 

Dreamora

BeitragMi, Okt 03, 2007 16:05
Antworten mit Zitat
Benutzer-Profile anzeigen
du musst einen zustand machen den du beim drücken der taste auf 1 bzw. bei nochmal drücken auf 0 setzt.
und wenn dieser zustand gesetzt ist wird das bild gezeichnet.

was du aktuell machst ist effektiv was du beschreibst: Das bild wird nur dann bei 500,500 gezeichnet wenn du die taste drückst, sonst nicht.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

ReLeNtLeSS

BeitragMi, Okt 03, 2007 16:12
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm... wie kriege ich einen solchen zustand hin?

Code: [AUSKLAPPEN]

bilda=1

(...)

bilda=drawimage mouse,500,500


ziemlich simpel, funzt auch nich, mekkert über ein Exepcting End of File...[/code]

Gameprogman

BeitragMi, Okt 03, 2007 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

zustand=0
(...)
If mousehit(1) then zustand=1
if zustand=1 then drawimage ...
(...)

so ungefähr[/quote]
www.bandradr.de ! Awesome !

ReLeNtLeSS

BeitragMi, Okt 03, 2007 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
alles klar,


so:
Code: [AUSKLAPPEN]

Repeat

Color 0,0,0
Rect 0,0,100,600
Color 255,255,255
Rect 100,0,800,600

If MouseDown(1)=True Then
zustand=1
EndIf
If zustand=1 Then
Color 255,0,255
DrawImage mouse,500,500
EndIf

DrawImage mouse,MouseX(),MouseY()
Flip
Until KeyHit(1)


FUnktioniert es jetz, aber so:

Code: [AUSKLAPPEN]

Repeat

Color 0,0,0
Rect 0,0,100,600
Color 255,255,255
Rect 100,0,800,600

If MouseDown(1)=True Then
zustand=1
EndIf
If zustand=1 Then
Color 255,0,255
DrawImage mouse,MouseX(),MouseY()
EndIf

DrawImage mouse,MouseX(),MouseY()
Flip
Until KeyHit(1)


Nicht, warum eigentlich? Is doch eingetnlich genau das gleiche? Ich möchte den Mauszeiger quasi "stempeln"

Dottakopf

BeitragMi, Okt 03, 2007 16:22
Antworten mit Zitat
Benutzer-Profile anzeigen
du könntest auch ne art schalter machen:


Code: [AUSKLAPPEN]


zustand = 0

if keyhit(1) then zustand = zustand +1
if zustand >= 2 then zustand = 0          ;bild wieder ausblenden

if zustand = 1 then drawimage blup,1,1 ;wenn zustand = 1 dan bild malen



~edit~ sry den letzten eintrag hab ich ned gesehen, du möchtest stempeln ? also so das des bild des du mit der maus steuerst dort gemalt bleibt ? Für sowas brauchste types

mfg Dottakopf

ReLeNtLeSS

BeitragMi, Okt 03, 2007 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
types? scheise

die mag ich gar nich^^ inwiefern muss ich das den mit types machen?

Dottakopf

BeitragMi, Okt 03, 2007 16:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Wart mal, nicht dass ich dir jetzt müll aufdreh, hab ich des richtig verstanden:

Du möchtest mit deinem mauszeiger, viele kleine rechtecke(die immer wieder gezeichnet werden) auf dem blidschirm malen. Also du klickst und dan erscheint ein neues bild ?

Wenn ja, brauchste types... entweder von robside oder du guckt hier:
https://www.blitzforum.de/foru...hp?t=25321

Wenn nein, dann erklär nochmal weil dan hab ichs ned verstanden Confused

mfg Dottakopf

mas93

BeitragMi, Okt 03, 2007 16:54
Antworten mit Zitat
Benutzer-Profile anzeigen
so, ich hab mir mal die Mühe gemacht und n kleines beispiel geschireben:

Code: [AUSKLAPPEN]

Graphics 640,480,32,2
SetBuffer BackBuffer()

Type bild                ;Den Type definieren
   Field x,y
End Type


Repeat
   
   If MouseHit(1)Then    ;Wenn maustaste gedrückt wird
      b.bild=New bild   ;neuen type erstellen
      b\x=MouseX()      ;Die koordinaten im Type Feld speichern
      b\y=MouseY()
   EndIf
   
   
   For b.bild=Each bild  ;In einer for- nexz Schleife werden alle types abgefragt
      Plot b\x,b\y      ;Hier wird dann ein punkt gezeichnet
   Next
   
   Flip
   Cls
Until KeyHit(1)


Ich hoffe du kapierst es.
Falls nicht kannst du ja nochma nachfragen


mfg
mas93
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

ReLeNtLeSS

BeitragMi, Okt 03, 2007 17:55
Antworten mit Zitat
Benutzer-Profile anzeigen
ich check das nich so wiiiirklich.... ich werde das mal kopieren und mal schauen, wie das ganze funzt...

also, jeder von euch kennt doch MS paint oder?

wenn man da das rechteck tool aus wält, ist der mauszeiger ein farbiges dreieck, wie bei mir. nun kann man da so zeichnen. und genau das will ich auch haben, deswegen sagte ich "stempeln"^^

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Okt 03, 2007 18:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du kein eigenen Mauszeiger zeichnen willst, kannst du es auch in den FrontBuffer einzeichnen (nicht zu empfehlen!). Beispiel:

Code: [AUSKLAPPEN]
Graphics 800,600,0,2
SetBuffer FrontBuffer()

mz=8

While Not KeyHit(1)
   mx=MouseX()
   my=MouseY()
   mz=mz-MouseZSpeed()
   If mz<1 Then mz=1
   If MouseDown(1) Then Color 255,255,255:Rect mx-mz,my-mz,2*mz,2*mz
   If MouseDown(2) Then Color 0,0,0:Rect mx-mz,my-mz,2*mz,2*mz
Wend
End


Willst du auch andere Sachen zeichnen, die nicht nur gestempelt werden, so würde ich es mit ImageBuffer machen. Beispiel:

Code: [AUSKLAPPEN]
Graphics 800,600,0,2
SetBuffer BackBuffer()

screen=CreateImage(800,600)

mz=8

While Not KeyHit(1)
   mx=MouseX()
   my=MouseY()
   mz=mz-MouseZSpeed()
   If mz<1 Then mz=1
   
   Color 255,255,255
   Rect mx-mz,my-mz,2*mz,2*mz,0
   
   If MouseDown(1) Then
      SetBuffer ImageBuffer(screen)
      Color 255,255,255
      Rect mx-mz,my-mz,2*mz,2*mz,1
      SetBuffer BackBuffer()
   End If
   
   If MouseDown(2) Then
      SetBuffer ImageBuffer(screen)
      Color 0,0,0
      Rect mx-mz,my-mz,2*mz,2*mz,1
      SetBuffer BackBuffer()
   End If
   
   DrawImage screen,0,0
   Flip
   Cls
   
Wend
End
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Dottakopf

BeitragDo, Okt 04, 2007 9:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau dir das mal in bb an, und sag dann mal ob das das ist was du brauchst.

Code: [AUSKLAPPEN]

Graphics 800,600,16,2
SetBuffer BackBuffer()
HidePointer



Global mx,my



;der stempel type
Type stempel
 Field stempel_x
 Field stempel_y
End Type




;--------------------------------
Repeat
Cls


maus_zeichnen()
stempel_machen()



Flip
Until KeyHit(1)
;---------------------------------



Function maus_zeichnen()        ;das ist ersatzweise für den maus courser

  mx = MouseX()
  my = MouseY()

   
  Rect mx, my , 10,10,1

End Function






Function stempel_machen()

   If MouseHit(1) Then           ;wenn linke maustaste, dann neuen stempel erstellen

        info.stempel = New stempel
          info\stempel_x = mx          ;stempel bei mauscourser x erstellen
            info\stempel_y = my          ;stempel bei mauscourser y erstellen
   End If


          For info.stempel = Each stempel          ;so und jetzt ALLE stempel malen

             Rect info\stempel_x , info\stempel_y ,  10,10,1   ;malt einen stempel
           
          Next


End Function



So wenn das das richtige sein sollte, musst du dich mit types auseinandersetzten. Glaub mir sie sind zwar als anfänger schwer zu verstehen, aber ich find die dinger einfach geil und du kannst damit alles machen !

Type tutorials findest du auf
robsite.de (und bei suche einfach mal types)

oder hier : (ist von mir *angeb*)
https://www.blitzforum.de/foru...hp?t=25321

oder hier : (ist aber am kompliziertesten)
http://www.blitzbase.de/tutorials/shadow_1.htm

mfg Dottakopf

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group