 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 04.06.2010, 09:45 Titel: Paintprogramm, Linien zeichnen |
|
|
Hi
Ich habe bei meinem OpenPaint gerade ein Problem:
Ich möchte Linien zeichnen, allerdings werden diese Linien nicht gelöscht, am besten kann man das am Bild sehen:
Das passiert durch folgenden Code:
Code: | Elseif Maus_Taste=1 and w=4 Then
AltePos_X = mx
AltePos_Y = my
Do While buttons=1
Getmouse mx, my,, buttons
Screenlock
machbild()
Screenunlock
Line Bild,(AltePos_X-81, AltePos_Y-26)-(mx-81, my-26), Farbe
Line (AltePos_X,AltePos_Y)-(mx,my),Farbe
Sleep 1
Loop |
Weiß jemand Rat? |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 04.06.2010, 11:38 Titel: |
|
|
bin da noch nicht 100% schlau durch den kleinen ausschnitt, aber kann es sein das es dadurch kommt das du gleichzeitig sovohl in deinem buffer als auch auf den screen schreibst (die linie ziehst)?
Ich seh da dann nun das problem das es eben kein buffer gibt wo der 'alte' zustand vorhanden ist?! _________________
 |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 04.06.2010, 11:44 Titel: |
|
|
Ehm. Wenn ich nur auf den Bildbuffer schreibe, sieht man ja nicht, wo man zeichnet. Hier ist mal der ganze Code:
Code: | Screenres 800,600,32
#Include "GUI.bas"
Declare Sub Machbild()
Farbe=&h000000
Werkzeug="Stift"
w=1
Bild=Imagecreate(719,553)
Line Bild,(0,0)-(800,600),&hFFFFFF,BF
Do
Screenlock
Cls
Machbild()
Put (81,26),Bild,Trans
Screenunlock
For i=1 to 28
If buttonpressed(i) = i then
Select Case i
Case 1
Farbe=&hFFFFFF
Case 2
Farbe=&hbbbbbb
Case 3
Farbe=&h000000
Case 4
Farbe=&hff0000
Case 5
Farbe=&hcd0000
Case 6
Farbe=&h800000
Case 7
Farbe=&h0000ff
Case 8
Farbe=&h0054a8
Case 9
Farbe=&h0000080
Case 10
Farbe=&h00ff00
Case 11
Farbe=&h008d00
Case 12
Farbe=&h008080
Case 13
Farbe=&hffff00
Case 14
Farbe=&hcdcd00
Case 15
Farbe=&h808000
Case 16
Farbe=&hff00f1
Case 17
Farbe=&h800080
Case 18
Farbe=&h4e004e
Case 19
w=1
Werkzeug="Stift"
Case 20
w=2
Werkzeug="Pinsel"
Case 21
w=3
Werkzeug="Farbeimer"
Case 25
w=4
Werkzeug="Linien"
Case 26
w=5
Werkzeug="gestrichelte Linien"
Case 27
w=6
Werkzeug="Rechteck"
Case 28
w=7
Werkzeug="Text"
Case 22
Bsave file,Bild
num2=0
Case 23
Bload file,Bild
num2=0
Case 24
Imagedestroy Bild
End
End Select
End if
Next
If mx>145 and mx<350 and my<22 and buttons=1 then
Color &h23102b,&hFFFFFF
Locate 2,20
Input "",file
End If
Getmouse mx,my,,buttons
Maus_Taste= buttons
If Maus_Taste=1 and w=1 Then
Maus_X= mx-81
Maus_Y= my-21
Line Bild,(Maus_X,Maus_Y)-(AltePos_X,AltePos_Y),Farbe
Elseif Maus_Taste=1 and w=2 Then
Maus_X=mx-81
Maus_Y=my-21
Circle Bild,(Maus_X,Maus_Y),10,Farbe,,,,F
Elseif Maus_Taste=1 and w=3 and mx>81 and my>21 Then
Maus_X= mx-81
Maus_Y= my-21
Paint Bild,(Maus_X,Maus_Y),Farbe',&h080808
Elseif Maus_Taste=1 and w=4 Then
AltePos_X = mx
AltePos_Y = my
Do While buttons=1
Getmouse mx, my,, buttons
Screenlock
machbild()
Screenunlock
Line Bild,(AltePos_X-81, AltePos_Y-26)-(mx-81, my-26), Farbe
Line (AltePos_X,AltePos_Y)-(mx,my),Farbe
Sleep 1
Loop
'Elseif Maus_Taste=1 and w=7 Then
' Sleep 1000
' If Maus_Taste=1 Then
' Color Farbe,&hFFFFFF
' Locate mx/8,my/8
' Input "",Text
' Draw String Bild,(mx,my),Text
' End If
End If
If Buttonpressed(1)=1 Then
Farbe=&h000000
End if
'Put (81,26),Bild,Trans
Sleep 10
AltePos_X=mx-81
AltePos_Y=my-21
'Flip
Loop
Getkey
Sub Machbild()
Line (0,0)-(800,25),&he6ddd5,BF
Line (0,0)-(80,600),&he6ddd5,BF
Line (0,580)-(800,600),&he6ddd5,BF
Line (80,25)-(801,579),&hb4a291,B
Line (145,2)-(350,22),&hFFFFFF,BF
Line (145,2)-(350,22),&hb4a291,B
Color &h23102b
Draw String(700,585),"X:"&mx-81
Draw String(745,585),"Y:"&my-26
Draw String(100,585),"Werkzeug: "&Werkzeug
Draw String(152,8),file
Button (5,50," ",1,&hFFFFFF,"")
Button (28,50," ",2,&hbbbbbb,"")
Button (51,50," ",3,&h000000,"")
Button (5,71," ",4,&hff0000,"")
Button (28,71," ",5,&hcd0000,"")
Button (51,71," ",6,&h800000,"")
Button (5,92," ",7,&h0000ff,"")
Button (28,92," ",8,&h0054a8,"")
Button (51,92," ",9,&h000080,"")
Button (5,113," ",10,&h00ff00,"")
Button (28,113," ",11,&h008d00,"")
Button (51,113," ",12,&h008080,"")
Button (5,134," ",13,&hffff00,"")
Button (28,134," ",14,&hcdcd00,"")
Button (51,134," ",15,&h808000,"")
Button (5,155," ",16,&hff00f1,"")
Button (28,155," ",17,&h800080,"")
Button (51,155," ",18,&h4e004e,"")
Button (5,300," ",19,&he6ddd5,"gfx/1.bmp")
Button (28,300," ",20,&he6ddd5,"gfx/2.bmp")
Button (51,300," ",21,&he6ddd5,"gfx/3.bmp")
Button (5,321," ",25,&he6ddd5,"gfx/4.bmp")
Button (28,321," ",26,&he6ddd5,"gfx/5.bmp")
Button (51,321," ",27,&he6ddd5,"gfx/6.bmp")
Button (5,2," Save ",22,&he6ddd5,"")
Button (75,2," Load ",23,&he6ddd5,"")
Button (735,2," Exit ",24,&he6ddd5,"")
Button (5,342," ",28,&he6ddd5,"gfx/6.bmp")
'Put (81,26),Bild,Trans
End Sub |
|
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 04.06.2010, 12:26 Titel: |
|
|
ok, is mir zum ueberfliegen ein wenig lang
Aber:
Wenn Du die Line funktion da hast, also das erste mal den Mausbutton drueckt.... muesstest du den aktuellen Bildausschnitt/Buffer als erstes mal speichern.
Da die flaeche variert am besten einmal den gesammten aktuellen arbeitsplatz...
darauf hin folgt solange maus gedrueckt ist eigentlich eine schleife
(Background/Screenlock)
Gespeicherten arbeitsplatz einfuegen (Buffer)
Linie zeichen (falls buffer, anschliessend buffer einfuegen)
(ScreenUnlock)
until button losgelassen
Edit:
SCREENLOCK
CLS
geht mal gar nicht!!!!!
Du hast Da doch deine eigene GUI die allein schon fuer dich arbeiten sollte, also sollte letztendlich nur noch dein 'arbeitsplatz' interessieren...
das ist 'zeitverschwendung' pur,
ich kram mal meine GUI examples raus  _________________
 |
|
Nach oben |
|
 |
|
|
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.
|
|