DrawingArea refresh klappt nicht

Spezielle Fragen zu 2D- und 3D-Grafik, Sound und Video
Benutzeravatar
Bluefish75
Foriker
Beiträge: 45
Registriert: Fr 10. Apr 2015, 09:30
Wohnort: Österreich
Kontaktdaten:

DrawingArea refresh klappt nicht

Beitrag von Bluefish75 » Fr 10. Apr 2015, 10:44

Hallo,

habe ein kleines Projekt gestartet, bin aber noch ziemlich am Anfang mit Gambas. Benutze die Version 3.1.1 auf Linux Mint 17.

Es geht darum einen Bildbetrachter mittels DrawingArea zu erstellen. Es gibt einen Load Button zum laden der Bilder.
Mein Problem ist folgendes, ich möchte das sich das Bild in der DrawingArea entweder alle 5 sekunden oder per refesh Button Aktuallisiert.

Die erste Möglichkeit das es sich selbst aktualisiert wäre mir natürlich am liebsten

Ist das überhaubt möglich?

Hier der Code:

Code: Alles auswählen

Public Sub load_Click()
 Dim hImage As Image
 Dialog.Path = "/home/skywalker" 
 If Not Exist(Dialog.Path) Then
    Dialog.Path = User.Home
  Endif
  
  'Dialog.Path = Application.Path

  Dialog.Filter = ["*.jpg;*.jpeg;*.png;*.bmp", "Picture files"]

  If Dialog.OpenFile() Then Return

  hImage = Image.Load(Dialog.Path)
  
  dwgImage.Clear()
  dwgImage.Resize(hImage.Width, hImage.Height)

  Draw.Begin(dwgImage)
  Draw.FillRect(0, 0, hImage.Width, hImage.Height, Color.Gray)
  Draw.Image(hImage, 0, 0)
  Draw.End
  
  dwgImage.Visible = True
  
Catch

  Message.Warning(Error.Text & " !")
  
End
Ich häng auch noch einen Screenshot drann damit ihr euch das ganze vorstellen könnt.

http://www.rioss.at/projekt/pix/screen.jpg

Danke im voraus

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

Re: DrawingArea refresh klappt nicht

Beitrag von gambasso » Fr 10. Apr 2015, 11:30

moin,

so was müßte sich mit einem 'Timer' machen lassen.
Gruss

Benutzeravatar
Bluefish75
Foriker
Beiträge: 45
Registriert: Fr 10. Apr 2015, 09:30
Wohnort: Österreich
Kontaktdaten:

Re: DrawingArea refresh klappt nicht

Beitrag von Bluefish75 » Fr 10. Apr 2015, 11:51

hallo,

also einen timer in die DrawingArea setzten und dann per Doppelklick am timer den Code DrawingArea.refresh oder wie?

kenn mich da leider zuwenig aus. könntest du mir da bitte ein code beispiel geben?

LG

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

Re: DrawingArea refresh klappt nicht

Beitrag von gambasso » Fr 10. Apr 2015, 13:09

nein, so nicht.
Den Timer ziehst Du auf das Formular. Der wird dann rechts im Eigenschaftsfenster angezeigt und erhält dort eine Bezeichnung, meistens 'Timer1'. Diese kannst Du aber ändern.
Doppelklick auf das Timersymbol auf dem Formular. Daurch wird eine Sub des Timers auf der Codeseite angelegt.

Im Eigenschaftfenster des Timers ist eine Zeile 'Delay'. In diesen Zeitintervallen wird der Timer, bzw. die Sub des Timers angesprungen wenn aktiv. Angaben in 'ms', d.h. 1000 = 1 sec.
Was da in der Sub hinterlegt ist, passiert dann jeweils.

Timer aktvieren z.B.: Timer1.Start / deaktivieren: Timer1.Stop
Das kannst Du mit einem Button oder auch sonst wie steuern.
Gruss

tux_
Moderator
Beiträge: 950
Registriert: Di 11. Nov 2008, 20:05
Kontaktdaten:

Re: DrawingArea refresh klappt nicht

Beitrag von tux_ » Fr 10. Apr 2015, 14:19

Folgende Bemerkung ist wichtig: deine Gambas-Version 3.1.1 ist vom April 2011. Seither hat sich so einiges veraendert, unter anderem ist die Draw-Klasse seit 3.4.0 veraltet und man zeichnet mittels eines Draw-Events in DrawingAreas (wobei das scheinbar schon am Ende von Gambas 2 die Voreinstellung geworden ist?). Ich wuerde dir also empfehlen, bald auf eine aktuelle Version umzuschwenken, damit du nicht spaeter umschulen musst. Wie man unter Ubuntu-basierten Distributionen (wie Mint) an ein aktuelles Gambas kommt, steht u.a. hier[0].

Ich muss gestehen, dass ich selbst nicht mehr so genau weisz, wie man mit Gambas 3.1.1 in eine DrawingArea zeichnet und, selbst wenn, koennte ich meinen Quelltext nicht ausprobieren. Das angehaengte Projekt zeigt dir, wie man ein Bild mit Gambas 3.x, x >= 4, periodisch neu in eine DrawingArea zeichnet.

[0] http://www.gambas-buch.de/dw/doku.php?id=k2:k2.3:start
periodic-paint-0.0.1.tar.gz
(4.38 KiB) 231-mal heruntergeladen
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!

Benutzeravatar
Bluefish75
Foriker
Beiträge: 45
Registriert: Fr 10. Apr 2015, 09:30
Wohnort: Österreich
Kontaktdaten:

Re: DrawingArea refresh klappt nicht

Beitrag von Bluefish75 » Fr 10. Apr 2015, 18:57

Danke mal für die Antworten.

Ich muss anscheinend wirklich Gambas updaten. dein Code scheint sonst bei mir nicht zu funktionieren :(

Ich hoffe das funktioniert dann auch alles noch wenn ich das Bild per Knopf und Dateiauswahlfenster laden möchte und nicht nur wenn ich den Pfad fix im Code eingeben muss.

Ich hoffe ich bekomme das hin, hab wie gesagt von Gambas noch keine Ahnung.

Benutzeravatar
Bluefish75
Foriker
Beiträge: 45
Registriert: Fr 10. Apr 2015, 09:30
Wohnort: Österreich
Kontaktdaten:

Re: DrawingArea refresh klappt nicht

Beitrag von Bluefish75 » Fr 10. Apr 2015, 20:54

Oje, oje hab nun das update auf Gambas 3.7 durchgeführt und nun läuft gar nix mehr so richtig. Das ganze sollte eigentlich nur eine GUI meine Scripte werden die per Buttons aufgerufen werden, das einziege was direkt in Gambas laufen sollte war eben der Bildbetrachter der sich selbst refreshen sollte und ein Mediaplayer zum abspielen von Videos. Der Mediaplayer macht nun seit dem update von 3.1.1 auf 3.7 auch Probleme. Beim laden und starten des Videos spielt er dieses nicht mehr in einer festen vorgegebenen Größe ab sonder schaltet dann in eine Art Fullscreen Modus obwohl dies in den Eigenschaften deaktiviert ist. Möchte nicht zwingend auf den externen Mplayer zugreifen. Irgend jemand eine Idee?

tux_
Moderator
Beiträge: 950
Registriert: Di 11. Nov 2008, 20:05
Kontaktdaten:

Re: DrawingArea refresh klappt nicht

Beitrag von tux_ » Fr 10. Apr 2015, 22:41

Kannst du Quelltext-Archive von den nicht funktionierenden Projekten erstellen (in der IDE Menu Project -> Make -> Source archive) und hier hochladen?
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!

Benutzeravatar
Bluefish75
Foriker
Beiträge: 45
Registriert: Fr 10. Apr 2015, 09:30
Wohnort: Österreich
Kontaktdaten:

Re: DrawingArea refresh klappt nicht

Beitrag von Bluefish75 » Fr 10. Apr 2015, 23:54

Natürlich, i hab dir gleich das ganze Projekt hochgeladen. Wie gesagt die Bildvorschau und der Videoplayer funktionieren nicht mehr.
Soll einfach nur eine GUI für meine Module sein alles andere wird ja nur per Buttons geladen.

Vielleicht findest du ja eine Lösung.
Dateianhänge
Gambas_3_release-1.4.7.tar.gz
(270.37 KiB) 239-mal heruntergeladen

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

Re: DrawingArea refresh klappt nicht

Beitrag von gambasso » Sa 11. Apr 2015, 08:53

moin,

habe es mir auch mal geholt. Hast Du Dir ja viel Mühe gegeben, das alles zu plazieren. Hat nur ein Nachteil, ist viel zu groß schon im Entwurf auf der Ide. Und, man kann im Betrieb die Größe nicht ohne Einbußen der Übersichtlichkeit verändern.

Da wäre interessant 'Form_Resize' / HSlit / VSplit und sowas alles. Die Elemente der Öberfläche würde ich ggf. noch auf Panels plazieren.
Mit diesen Elementen würde ich mal Versuche anstellen.
Gruss

tux_
Moderator
Beiträge: 950
Registriert: Di 11. Nov 2008, 20:05
Kontaktdaten:

Re: DrawingArea refresh klappt nicht

Beitrag von tux_ » Sa 11. Apr 2015, 09:49

Mmm, das Projekt ist mir doch zu grosz und zwar auf zwei verschiedene Arten: zuerst passt das Fenster nicht auf meinen Desktop. Die Steuerelemente manuell zu verkleinern ist eine ganz schoene Huddelei. Das zweite Groeszenproblem betrifft den Projektquelltext: es ist zu viel drumherum. Ein minimales Projekt waere mir lieber, also z.B. ein eigenstaendiges Projekt, das nur deinen Code fuer den nicht-funktionierenden Mediaplayer enthaelt. Das haette ich sagen muessen.

Im Anhang ist aber ein kleines Projekt, welches deine Idee von einem Media-Player funktionsfaehig umsetzt (wenn ich sie aus dem Quelltext richtig herausgelesen habe).
mplayer-wid-0.0.1.tar.gz
(4.32 KiB) 229-mal heruntergeladen
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!

Benutzeravatar
Bluefish75
Foriker
Beiträge: 45
Registriert: Fr 10. Apr 2015, 09:30
Wohnort: Österreich
Kontaktdaten:

Re: DrawingArea refresh klappt nicht

Beitrag von Bluefish75 » Sa 11. Apr 2015, 10:47

Oh ja sorry hab das mit der Größe nicht so bedacht, hab das auf meine Schirme angepasst. War ja eigentlich nur für den Eigengebrauch gedacht.

Werde das noch überarbeiten. Vielleicht erstelle ich statt den Buttons ja auch Menüs. Wie gesagt ich hab von Gambas noch keine Ahnung bin ja eigentlich Grafiker.

Die Oberfläche werde ich sicher noch überarbeiten.

Ja genau tux du hast das richtig aus dem Quelltext gelesen, dein Player funktioniert auch so wie ich in haben will. Werde ihn in leicht abgeänderter Form übernehmen.

Jetzt muss ich nur noch die Bildvorschau hin bekommen. Hab zwar einiges gefunden aber das mit dem refresh des Bildes hat eigentlich bei keinem Beispiel funktioniert.

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

Re: DrawingArea refresh klappt nicht

Beitrag von gambasso » Sa 11. Apr 2015, 15:25

bluef75_002.tar.gz
(278.79 KiB) 224-mal heruntergeladen
moin,

hab Dir mal das Ganze etwas flexibler gestaltet. Versuch mal.
Gruss

tux_
Moderator
Beiträge: 950
Registriert: Di 11. Nov 2008, 20:05
Kontaktdaten:

Re: DrawingArea refresh klappt nicht

Beitrag von tux_ » Sa 11. Apr 2015, 15:56

Nein! Solchen Code (270 Zeilen Resize-Event-Handler) sollte man niemandem zeigen, erst recht keinem Neuankoemmling. Sonst koennte noch der Eindruck entstehen, Gambas waere mehr eine Last als eine Hilfe. Die Resize-Events muss man fast nie implementieren, um ein ordentliches skalierbares Fenster-Layout zu realisieren. Gambas kann das Layout automatisch berechnen, wenn sich die Fenstergroesze aendert, vorausgesetzt dass man die Layout-Container Panel, {H,V}Box und {H,V}Panel sowie die Eigenschaften Expand, Spacing, Margin, AutoResize und Arrangement richtig einsetzt. Das gehoert aber nicht hier her.
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!

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

Re: DrawingArea refresh klappt nicht

Beitrag von gambasso » Sa 11. Apr 2015, 16:29

ist ja ok, so hab ich aber unter Kontrolle.
Gibt es da was einfacheres? Ich habe da eine Form mit vielen Elementen drauf, das ist eine ganz schöne Tipperei.
Mit dem 'Expand, Spacing, Margin, AutoResize und Arrangement' wollte ich mich auch mal befassen, wegen der Tipperei.
Aber ich bin jetzt noch immer, wenn ich Zeit hab und der Garten mich läßt, mit den HDD's dran.
Eine Positionierung von Elementen kann man doch auch in eine Zeile fassen.
Wie sieht die Zeile aus und wie ist die Reihenfolge der Einträge? Da hab ich noch nichts drüber gefunden.
Gruss

Antworten

Wer ist online?

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