PictureBox leeren

Alle Fragen zur Programmierung, die nicht in die speziellen Themen passen
roemi
Site Admin
Beiträge: 425
Registriert: So 11. Dez 2005, 20:05
Wohnort: Hanau / Germany
Kontaktdaten:

PictureBox leeren

Beitrag von roemi » Do 28. Feb 2019, 16:26

Hallo,
und wieder etwas zu dem ICH keine Lösung finde.
Ich nutze sehr viel eine PictureBox. Fast mit jeder Aktion werden Bilder mit gambas code
PictureBox1.Picture = Picture[verz_download & v_image_out]
geladen.
Ich schaue mir ein Bild an und wenn es i.O. ist, kopiere ich es im Hintergrund, nenne es um etc.
Anschließend leere ich die Box mit gambas code
PictureBox1.Picture.Clear
Soweit, so gut.
Angenommen ich lade ein Bild Namens "logo.jpg" und dann zehn andere und dann wieder ein völlig anderes, aber ebenfalls mit Namen "logo.jpg" ... dann bekomme ich das erste "logo.jpg" angezeigt. Obwohl das nicht mehr vorhanden ist (umbenannt, weg kopiert und Original gelöscht)
Verwirrend ... ich hoffe nicht. Als hält die Box das Bild in einem Cache.
Römi (seit 1989 bekennender Bergradfahrer und professioneller Biertrinker)
http://www.roemi.de

gambasso
Foriker
Beiträge: 1050
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Re: PictureBox leeren

Beitrag von gambasso » Fr 1. Mär 2019, 14:44

moin,

momentan weise ich dem Picture der PictureBox ein Image zu. Vorher jedesmal:
gambas code
Image1 = New Image()
Image1.Fill(-1)
> Image laden, dann zur PictureBox.
gambas code
PictureBox.Picture = Image1.Picture.Copy()
evtl. noch eine 'Resize' der PB
das klappt soweit bei mir.
Gruss

roemi
Site Admin
Beiträge: 425
Registriert: So 11. Dez 2005, 20:05
Wohnort: Hanau / Germany
Kontaktdaten:

Re: PictureBox leeren

Beitrag von roemi » Sa 2. Mär 2019, 15:38

Ok. Probiere ich aus.

Thx.
Römi (seit 1989 bekennender Bergradfahrer und professioneller Biertrinker)
http://www.roemi.de

Benutzeravatar
Honsek
Foriker
Beiträge: 409
Registriert: Do 4. Okt 2007, 17:01
Kontaktdaten:

Re: PictureBox leeren

Beitrag von Honsek » So 3. Mär 2019, 18:48

Hallo roemi,

ob das hilft: https://www.gambas-buch.de/doku.php?id= ... t_loeschen ?

Mit freundlichem Gruß

Hans
Honsek (https://www.gambas-buch.de)
---> Wenn Du eine gute Antwort erwartest, musst Du sehr gut fragen!

roemi
Site Admin
Beiträge: 425
Registriert: So 11. Dez 2005, 20:05
Wohnort: Hanau / Germany
Kontaktdaten:

Re: PictureBox leeren

Beitrag von roemi » So 3. Mär 2019, 19:40

Hallo Honsek,

keine Ahnung wie oft ich schon auf dieser Seite war 🤔 aber bis runter habe ich offensichtlich nie geblättert. 😂
Römi (seit 1989 bekennender Bergradfahrer und professioneller Biertrinker)
http://www.roemi.de

roemi
Site Admin
Beiträge: 425
Registriert: So 11. Dez 2005, 20:05
Wohnort: Hanau / Germany
Kontaktdaten:

Re: PictureBox leeren

Beitrag von roemi » Mi 6. Mär 2019, 19:03

Hallo Ihr zwei,

ich habe nun beide Varianten mehrfach im Code platziert und mehrfach getestet ... ohne Erfolg.
Die PictureBox wird nicht geleert.
😟
Römi (seit 1989 bekennender Bergradfahrer und professioneller Biertrinker)
http://www.roemi.de

gambasso
Foriker
Beiträge: 1050
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Re: PictureBox leeren

Beitrag von gambasso » Do 7. Mär 2019, 11:53

moin,

Versuch mal...
gambas code
Dim himg As Image

himg = New Image(PictureBoxyx.W, PictureBoxyx.H)
himg.Fill(-1)

PictureBoxyx.Picture = himg.Picture.Copy()
Damit überschreibst Du das bestehende Picture mit ein leeres Image.
Vielleicht klappt es.
Gruss

Benutzeravatar
Honsek
Foriker
Beiträge: 409
Registriert: Do 4. Okt 2007, 17:01
Kontaktdaten:

Re: PictureBox leeren

Beitrag von Honsek » Do 7. Mär 2019, 19:14

ich habe nun beide Varianten mehrfach im Code platziert und mehrfach getestet ... ohne Erfolg.
Die PictureBox wird nicht geleert. ...
Hallo roemi,

ich habe mehrere Tests absolviert. Mit dem von mir angegebenen Quelltext wird in der PictureBox kein Bild angezeigt. Beschreibe doch mal, was ich mir unter '... ohne Erfolg' vorstellen muss! Bevor wir hier aneinander vorbei schreiben, teste doch (noch) mal das Projekt von der Seite https://www.gambas-buch.de/doku.php?id= ... t#download und ändere in der Zeile 37 den Wert für Wait auf 3. Reicht Dir die leere PictureBox nicht?

Ich suche noch einmal in den EMails von 2015 (!) nach den Antworten von Minisini zu den Methoden Picture.Clear() und PictureBox.Flush() und zur Antwort auf meine Frage, wie man eine PictureBox 'leert'. Ich melde mich dann wieder!

Mit freundlichem Gruß
Honsek (https://www.gambas-buch.de)
---> Wenn Du eine gute Antwort erwartest, musst Du sehr gut fragen!

Benutzeravatar
tionov
Site Admin
Beiträge: 319
Registriert: So 18. Mai 2014, 22:40
Kontaktdaten:

Re: PictureBox leeren

Beitrag von tionov » Fr 8. Mär 2019, 00:14

Hallo, falls das nicht bekannt ist ... hier kann die englische Mailingliste durchsucht werden:
https://lists.gambas-basic.org/cgi-bin/ ... ebox+clear
Alles Gute,

tionov

roemi
Site Admin
Beiträge: 425
Registriert: So 11. Dez 2005, 20:05
Wohnort: Hanau / Germany
Kontaktdaten:

Re: PictureBox leeren

Beitrag von roemi » Fr 8. Mär 2019, 10:38

Hi,
ich versuche es nochmal zu beschreiben.
Ich kopiere ein Bild z.B. logo.png in ein Verzeichnis.
Dann rufe ich in meinem Programm ein Funktion auf, die dieses Bild in der Größe anpasst und in die PictureBox läd.
Ist das Bild i.O. wird das Bild im Verzeichnis umbenannt und per FTP kopiert und gelöscht.
Die PictureBox wird geleert. Und das auf jede vorgeschlagene Weise.
Irgendwann kommt wieder ein Bild namens logo.png ins Verzeichnis.
Rufe ich dann meine Funktion auf, wird nicht das im Verzeihnis befindliche Bild sondern das zuerst aufgerufene logo.png dargestellt.
Obwohl dies gar nicht mehr existiert. Es muss sich also noch im internen Speicher der PictureBox befinden. Und das obwohl ich zwischenzeitlich duzende andere Bilder auf diese Art bearbeitet habe.
Römi (seit 1989 bekennender Bergradfahrer und professioneller Biertrinker)
http://www.roemi.de

gambasso
Foriker
Beiträge: 1050
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Re: PictureBox leeren

Beitrag von gambasso » Fr 8. Mär 2019, 13:47

moin,

habe es jetzt so gemacht:
gambas code
   Dim himg As Image
   
   himg = New Image
   himg.Fill(-1)

    PictureBox3.Picture = himg.Picture.Copy()
   Wait
Danach sehe ich nichts mehr in der PictureBox3.
Vielleicht bindest Du mal ein Image mit ein und versuchst es mal damit, so wie im Beispiel.
Der Unterschied zum vorherigen Beitrag von mir ist das > himg = New Image ' (PictureBox3.W, PictureBox3.H) < ist weggelassen.
Ich hatte damit irgendwelchem Mist als Bild. Ich versuche mal weiter.
Gruss

roemi
Site Admin
Beiträge: 425
Registriert: So 11. Dez 2005, 20:05
Wohnort: Hanau / Germany
Kontaktdaten:

Re: PictureBox leeren

Beitrag von roemi » Fr 8. Mär 2019, 14:16

Du kannst das nachvollziehen?

Ich lade ja zwischen zwei gleichnamige Dateien viele andere in die Box und ich lade, wenn kein Bild vorhanden einen Standard.
Römi (seit 1989 bekennender Bergradfahrer und professioneller Biertrinker)
http://www.roemi.de

gambasso
Foriker
Beiträge: 1050
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Re: PictureBox leeren

Beitrag von gambasso » Fr 8. Mär 2019, 14:17

Weiter,

dann lade doch mal anstelle eines Picture ein Image. Vor dem Laden Löscht Du das Image (Beispiel). Nach dem Laden schickst du das Image wie im Beispiel zur PictureBox. Damit müßte das Problem behoben sein.

Eine kleine Hilfe:
gambas code
Public ArbImage As Image

Public Sub M1_Load_Img()
   
   Dialog.Path = FMain.ArbPfad '     < Dein Arbeitspfad
   Dialog.ShowHidden = True
   
   If Dialog.OpenFile() Then
      'FMain.LabelST1_1.Text = "Abbruch durch Benutzer!" ' war nur eine Anzeige für mich
      Return
   Endif
   FMain.ArbImage = New Image
   FMain.ArbPfad = Dialog.Path
   Try ArbImage = Image.Load(FMain.ArbPfad)
   
   If Error Then
      Message.Info("File '" & FMain.ArbPfad & "' nicht Laden!\n" & Error.Text & " Code: " & Error.Code, "OK")
      Return
   Endif
   
End

Public Sub Zeige_Bild()
   
	'  evtl. vorher anpassen
	PictureBox1.Picture = FMain.ArbImage.Picture.Copy()

End
Das müßte damit klappen. Die Bezeichnungen mußt Du natürlich anpassen.
Gruss

roemi
Site Admin
Beiträge: 425
Registriert: So 11. Dez 2005, 20:05
Wohnort: Hanau / Germany
Kontaktdaten:

Re: PictureBox leeren

Beitrag von roemi » Fr 8. Mär 2019, 14:48

öhhh ... Try PictureBox1.Picture.Flush

Scheint zu klappen. hab gerade bestimmt 10 unterschiedliche log.png ohne Probleme angezeigt bekommen.
gambasso hat geschrieben:
Do 7. Mär 2019, 11:53
Ich suche noch einmal in den EMails von 2015 (!) nach den Antworten von Minisini zu den Methoden Picture.Clear() und PictureBox.Flush() und zur Antwort auf meine Frage, wie man eine PictureBox 'leert'. Ich melde mich dann wieder!
Das erinnerte mich auch an was ... und wer lesen kann, ist klar im Vorteil: Flushes the internal picture cache.

:oops: :oops: :oops: :oops:

DANKE (ganz groß geschrieben)
Römi (seit 1989 bekennender Bergradfahrer und professioneller Biertrinker)
http://www.roemi.de

Benutzeravatar
Honsek
Foriker
Beiträge: 409
Registriert: Do 4. Okt 2007, 17:01
Kontaktdaten:

Re: PictureBox leeren

Beitrag von Honsek » Fr 8. Mär 2019, 15:00

roemi hat geschrieben:
Fr 8. Mär 2019, 10:38
Rufe ich dann meine Funktion auf, wird nicht das im Verzeinis befindliche Bild sondern das zuerst aufgerufene logo.png dargestellt.
Obwohl dies gar nicht mehr existiert. Es muss sich also noch im internen Speicher der PictureBox befinden.
Hallo roemi,

mit relevantem Quelltext käme man besser voran. Gib doch mal den Quelltext zu 'meine Funktion' an, die Du aufrufst. Dann erkenne ich besser, was diese Funktion leistet. Die Aussage zum internen Speicher ist korrekt.

Ich war in der Zwischenzeit dabei, ein Projekt zu erproben, das noch einmal alle Theorie-Elemente zu Picture und PictureBox einsetzt und Deinen Ansatz berücksichtigt. Das Projekt liegt im Anhang

Mit freundlichem Gruß

PictureBox-0.2.2.tar.gz
(860.36 KiB) 27-mal heruntergeladen
Honsek (https://www.gambas-buch.de)
---> Wenn Du eine gute Antwort erwartest, musst Du sehr gut fragen!

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste