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:

Paintprogramm, Linien zeichnen

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



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 04.06.2010, 09:45    Titel: Paintprogramm, Linien zeichnen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 04.06.2010, 11:38    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 04.06.2010, 11:44    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 04.06.2010, 12:26    Titel: Antworten mit Zitat

ok, is mir zum ueberfliegen ein wenig lang happy
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 grinsen

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 happy
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. 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