Warum ist der Inhalt eines Panels schwarz?

Spezielle Fragen zu 2D- und 3D-Grafik, Sound und Video
gambasso
Foriker
Beiträge: 995
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Warum ist der Inhalt eines Panels schwarz?

Beitrag von gambasso » So 20. Sep 2015, 11:17

moin,

ich versuche mit einem Panel einen Ausschnitt einer 'DrawingArea' zu separieren. Auf der 'DrawingArea' liegt ein Image.
Der Inhalt des Panels ist hier immer schwarz.
In einem anderen Programm versuche ich es auf eine PictureBox, dabei klappt es, dort ist das Panel transparent, so daß ich den Hintergrund sehe.

Habe das Programm wegen Probleme umgestellt auf die Darstellung auf einem Image, anstelle eines Pictures.
Bei dem Picture wurden die Zeichnungen größtenteils schwarz dargestellt.

Wie bekomme ich das Panel transparent?
Gruss

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

Re: Warum ist der Inhalt eines Panels schwarz?

Beitrag von gambasso » Mo 21. Sep 2015, 11:04

moin,

habe mal eine Demo erstellt, dort sieht man das Panel.
kl_pics_003-0.0.1.tar.gz
(6.66 KiB) 339-mal heruntergeladen
Gruss

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

Re: Warum ist der Inhalt eines Panels schwarz?

Beitrag von tux_ » Mi 23. Sep 2015, 00:20

Bei mir gibt es mit dem angehaengten Projekt kein Problem. Siehe Screenshot.
kl_pics.png
kl_pics.png (23.24 KiB) 10635 mal betrachtet
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: Warum ist der Inhalt eines Panels schwarz?

Beitrag von gambasso » Mi 23. Sep 2015, 08:53

moin tux,

Du hast ja auch ein Zeichenobjekt 'gemalt'. Zeichne mal einen Rahmen. (auf Rahmen klicken). Dabei erscheinen bei mir die Schwierigkeiten.
Gruss

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

Re: Warum ist der Inhalt eines Panels schwarz?

Beitrag von tux_ » Mi 23. Sep 2015, 09:35

Ist hier der Fehler zu sehen? Nur damit wir uns richtig verstehen: ich habe auf "Rahmen" geklickt und dann auf zwei Punkte innerhalb der DrawingArea, um das Objekte zu zeichnen.
kl_pics.png
kl_pics.png (15.68 KiB) 10626 mal betrachtet
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: Warum ist der Inhalt eines Panels schwarz?

Beitrag von gambasso » Mi 23. Sep 2015, 09:42

Endschuldigung,
den Rahmen mit 'Mouse_Move' erstellen, d.h.: 1 Mal klicken und ziehen, Loslassen.
Und ich hatte zu Versuchszwecken beim Start die Linie mit der Box drum rum.

Nochmal Versuchen, Screenshot
Screenshot_pic2.png
Screenshot_pic2.png (13.58 KiB) 10625 mal betrachtet
Gruss

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

Re: Warum ist der Inhalt eines Panels schwarz?

Beitrag von tux_ » Mi 23. Sep 2015, 10:20

Das kann ich reproduzieren. Es handelt sich wohl um einen Graphikglitch, weil das Panel durch die vielen Resizes sehr oft ueber der DrawingArea neu gezeichnet werden muss. Es gibt mindestens zwei Wege, um das zu beheben:
  1. Stelle die DrawingArea auf Cached = False, dann bleiben die Reste vom Panel-Zeichenvorgang nicht im Bildspeicher, oder
  2. Lege keine Steuerelemente auf eine DrawingArea.
Diese beiden Vorgehensweisen sind generell zu empfehlen, nicht nur wegen des aktuellen Problems.
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: Warum ist der Inhalt eines Panels schwarz?

Beitrag von gambasso » Mi 23. Sep 2015, 11:29

das geht erst mal. Aber: es ist nicht durchsichtig, es verdeckt dahinterliegende Gemälde.
Gruss

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

Re: Warum ist der Inhalt eines Panels schwarz?

Beitrag von tux_ » Mi 23. Sep 2015, 11:48

Ja, klar. Panels sind undurchsichtig. Ein weiterer Grund, warum sie ueber DrawingAreas unguenstig sind.
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: Warum ist der Inhalt eines Panels schwarz?

Beitrag von gambasso » Mi 23. Sep 2015, 12:04

Was kann ich denn anstelle eines Panels nehmen?
Auf einem Picture klappt es. Habe ich bei einem Scan-Prg. genommen.
Gruss

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

Re: Warum ist der Inhalt eines Panels schwarz?

Beitrag von tux_ » Mi 23. Sep 2015, 12:26

Was kann ich denn anstelle eines Panels nehmen?
Ich weisz nicht, was du mit dem Panel erreichen wolltest. Davon haengen deine Alternativen ab.
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: Warum ist der Inhalt eines Panels schwarz?

Beitrag von gambasso » Mi 23. Sep 2015, 13:33

Ich möchte einen Rahmen ziehen. Alles innerhalb des Rahmens als Image oder Picture kopieren und weiter verwenden.
Der nächtse Schritt wäre, den Rahmen auf der Oberfäche zu bewegen und in seiner Größe zu ändern.

Das funktioniert auf einem Picture mit einem Panel als Rahmen. (Scan-Prg.)
Gruss

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

Re: Warum ist der Inhalt eines Panels schwarz?

Beitrag von tux_ » Mi 23. Sep 2015, 15:03

Dafuer solltest du dir etwas geschickteres ueberlegen, das nur mit Paint-Mitteln auskommt. Du willst eigentlich zwei Schichten ("Layer") in deiner DrawingArea haben: auf dem unteren Layer ist die Zeichnung, auf dem oberen kann man Teile der Zeichnung auswaehlen. Im Anhang ist ein kleines Projekt, das diese Idee umsetzt. Dabei bediene ich mich ein wenig am "Freihand-Zeichnen"-Code aus dem Gambas-Buch[0]. Die beiden Layer werden als zwei transparente Images implementiert, die uebereinander auf die DrawingArea gezeichnet werden. Mithilfe des ToggleButtons schaltet man zwischen den beiden Layern um, d.h. zwischen Zeichen- und Auswahlmodus.
drawingarea-select-copy-1.png
Bildausschnitt auswaehlen
drawingarea-select-copy-1.png (9.25 KiB) 10596 mal betrachtet
drawingarea-select-copy-2.png
Ausschnitt isoliert
drawingarea-select-copy-2.png (11.58 KiB) 10596 mal betrachtet
[0] http://www.gambas-buch.de/dw/doku.php?i ... .4.2:start
drawingarea-select-copy-0.0.1.tar.gz
(5.1 KiB) 339-mal heruntergeladen
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: Warum ist der Inhalt eines Panels schwarz?

Beitrag von gambasso » Do 24. Sep 2015, 12:37

moin,

das Beispiel ist zwar ganz schön, aber es macht nicht das, was ich möchte. (Verschieben, Ändern)
--

Wenn ich DrawingArea - Cache auf 'False' setze, kann ich nicht mehr zeichnen. Es kommt, ich seie außerhalb dessen.
Warum, was bedeutet es, wie geht es dennoch?
Gruss

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

Re: Warum ist der Inhalt eines Panels schwarz?

Beitrag von tux_ » Do 24. Sep 2015, 13:29

das Beispiel ist zwar ganz schön, aber es macht nicht das, was ich möchte. (Verschieben, Ändern)
Ich hatte auch nicht die Absicht, die ganze Arbeit fuer dich zu erledigen. Das Verschieben und Aendern der Auswahl stellt aus meiner Sicht keine grosze Huerde dar, fuer jemanden, der sich mit Paint auskennt und die Idee mit den Layern verinnerlicht hat.
Wenn ich DrawingArea - Cache auf 'False' setze, kann ich nicht mehr zeichnen. Es kommt, ich seie außerhalb dessen.
Warum, was bedeutet es, wie geht es dennoch?
Auch das wird in meinem Projekt demonstriert; dort ist Cached = False von Anfang an. Wenn du Cached = False setzt, wird der Inhalt der DrawingArea nicht mehr automatisch in einem internen Image gespeichert und du kannst auf die DrawingArea nurnoch innerhalb ihres Draw-Events zeichnen. Das Draw-Event wird automatisch durch den Interpreter ausgeloest, wenn der Inhalt der DrawingArea neu gezeichnet werden muss, oder wenn man die Refresh()-Methode der DrawingArea aufruft. Auch wenn dieses Vorgehen zuerst umstaendlich klingt, ist es die flexiblere und bisweilen effizientere Alternative -- und fuer deine Ansprueche braucht man diese Flexibilitaet.

In meinem Projekt wird deshalb stets auf Images gezeichnet und diese Images werden dann im Draw-Event der DrawingArea (mit Transparenz) uebereinander gemalt. So ergibt sich das fertige Bild auf dem Bildschirm. Ich implementiere den Cache also selbst, und zwar in meinem Gambas-Quelltext, wo ich ihn kontrollieren kann. Du solltest mein Projekt einfach mal studieren und ggfs. mit guten Fragen wiederkommen.

PS: Honsek hat mich darauf aufmerksam gemacht, dass im Projekt oben die Groeszenanpassung der Images beim Start nicht richtig funktioniert. Die Loesung im Anhang ist ebenfalls von ihm.
drawingarea-select-copy-0.0.2.tar.gz
(5.12 KiB) 298-mal heruntergeladen
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!

Antworten

Wer ist online?

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