Transparent bzw. transfluent(durscheinend) drucken?

Status
Nicht offen für weitere Antworten.

Faebz

Mitglied
Weiß jemand von euch, wie man ein transparentes, bzw transfluentes JPanel bzw. textPane auf ein Grahics2D object zeichnen kann und es anschließend zu drucken. Danach sollte das JPanel dann wirklich durscheinend sein, also der Alpha-wert der angegebenen Hintergrundfarbe muss berücksichtigt werden, was wohl leider nicht der Fall ist.
 

Faebz

Mitglied
Also nun etwas genauer zu meinem Problem....

Ich benutze ein aus JAI (Java Advanced Imaging) stammendes aus Tiles bestehendes PlanarImage. Beim Drucken wird jedes einzelne Tile in ein BufferedImage umgewandelt.
Dieses wird dann in einer Schleife jeweils auf das vorhandene Graphics2D-objekt gezeichnet, das anschließend gedruckt werden soll.
So, das funktioniert, aber jetzt sollen auf das Image noch Notitzen bzw. Markierungen gezeichnet werden die durscheinend sind. Bei der Bildschirmausgabe habe ich diesen textPanes bzw. JPanels einfach eine Hintergrundfarbe mit Alpha-wert < 255 zugewiesen.... was dort auch wunderbar funktioniert.

Jetzt dacht ich natürlich wunderbar kein Problem. Nach der Schleife, in der ich die einzelnen Tiles zeichne rufe ich die print(Graphics g) methode der durchscheinende Komponenten an und die Sache ist geschwätzt. War aber nicht so. Die Komponenten werden zwar gedruckt, aber halt nicht durchscheinend.

Ich hab schon probiert wenn ich einfach ein Rechteck zeichen will und zuvor die Farbe mittels g.setColor(new Color(255,255,255, 100)); auf ein transparentes weiß stelle, wird das Rechteck trotzdem deckend weiß gezeichnet. Also irgendwo muss da wohl noch ein Fehler liegen und da frag ich euch? ob ihr mir irgendwie helfen könnt.

Was funktioniert. Wenn ich auf das Graphics - object eines BufferedImage eine durscheinende Komponente zeichne und dann das BufferedImage auf das zu druckene Graphics-object zeichne wird die Komponente wirklich durscheinend gedruckt. Dies wär ne Lösung, aber ziemlich umständlich....

Wäre echt cool, wenn ihr helfen könnt und eine bessere Lösung kennt.... Danke, euch...
 

AlArenal

Top Contributor
Kann dir konkret nicht bei deinem Problem helfen, da ich über eine Druck-Lib von den Feinheiten des Druckens abstrahiert bin und mich demzufolge damit auch nicht beschäftige, kann dir aber sagen dass die Verwendung von Transparenz im Zusammenhang mit dem Druck selten eine gute Idee, bzw. oft eine schlechte ist.

Ich habe hier beispielsweise eine eigene Anwendung zur Erstellung von Flowcharts um einen neuen Node-Typen erweitert, der Teilgraphen aufnehmen konnte, welche dann auch beleibig ineinander verschachtelt werden konnten. Dazu habe ich dem Ding einen schwach blauen (da größtenteils durchscheinenenden) Hintergrund verpasst. Das war zunächst auch beim Druck kein Problem, bis ich von Kunden das Feedback bekam, dass ihre Arbeitsplätze, Server und das Netzwerk in die Knie gehen, weil auch einseitige (A4) Flowcharts auf einmal schlappe 40 MB große Druckjobs erzeugten.

Auf der Suche nach der Ursache hat der Support der Drucklib wie immer einen hervorragenden Job geleistet und konnte über eine kleine Beispielanwendung von mir das Ganze reproduzieren. Am Ende lief es darauf hinaus, dass die Verwendung von Transparenz beim Drucken schuld war. Wird auch nur ein Objekt mit Transparenz gedruckt, bläht das den kompletten Druckjob auf ein Maß auf, dass auch für den Support nicht nachzuvollziehen war, weil man selbst ausgehend von einer Rasterung aller Seiten in Druckauflösung nie und nimmer solche Datenmengen erreicht hätte... Weitere Untersuchungen bis ins JDK haben wir dann nicht angestellt, da es keinen Sinn gemacht hätte, da wir unseren Kunden keines vorschreiben können. Stattdessen benutzen wir einen Workaround, der ohne Transparenz druckt und dazu einfach einen Farbwert benutzt, der dem zuoberst liegenden Punkt am nähesten kommt. Das kann bei Überlagerung im Druck natürlich deutlich vin der Bildschirmdarstellung abweichen. Da der Verwendungsfall bei uns aber sehr selten ist, können wir das verschmerzen.

Interessant fand ich in dem Zusammenhang, dass letztens, als ich eine PowerPoint-Präsentation drucken wollte erst eine Sicherheitsabfrage kam, von wegen die Präsentation enthält transparente Objekte und dass das den Druck deutlich verlangsamen kann und ob man diese transparent drucken möchte oder nicht...

Daher: Am besten auf Transparenz verzichten für den Druck.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Transparent zeichnen mit drawImage in paintComponent Methode AWT, Swing, JavaFX & SWT 3
L AWT .gif image transparent machen AWT, Swing, JavaFX & SWT 3
E Transparent zeichnen AWT, Swing, JavaFX & SWT 2
L JavaFX TableView background transparent machen AWT, Swing, JavaFX & SWT 7
V JavaFX Teile eines Images Transparent machen AWT, Swing, JavaFX & SWT 4
stylegangsta JButton Transparent anzeigen AWT, Swing, JavaFX & SWT 9
T Rectangle Transparent und darunter liegende Objekte Bedienbar AWT, Swing, JavaFX & SWT 0
B Dropdown "Einstellungen" auf JPanel, transparent AWT, Swing, JavaFX & SWT 1
T AWT Bild laden und transparent zeichnen AWT, Swing, JavaFX & SWT 2
T Jframe Transparent machen AWT, Swing, JavaFX & SWT 3
N Swing Frame ungewollt transparent! AWT, Swing, JavaFX & SWT 2
T transparent geht nicht (btw: rechteck) AWT, Swing, JavaFX & SWT 13
C Swing Button color transparent AWT, Swing, JavaFX & SWT 4
eLogic png transparent auf Desktop Zeichnen AWT, Swing, JavaFX & SWT 3
S Graphics2D: Transparent übereinander zeichnen AWT, Swing, JavaFX & SWT 7
A Swing JCheckbox transparent machen AWT, Swing, JavaFX & SWT 7
B RootPane bzw CardLayout Transparent machen AWT, Swing, JavaFX & SWT 7
N Window transparent, Komponenten nicht transparent AWT, Swing, JavaFX & SWT 11
M Wie kann man 2 JPanel aufeinander transparent legen? AWT, Swing, JavaFX & SWT 4
lumo SWT Canvas transparent AWT, Swing, JavaFX & SWT 4
I 2 Panels übereinander, 1 transparent AWT, Swing, JavaFX & SWT 2
S JFrame transparent? AWT, Swing, JavaFX & SWT 8
martin82 Swing JTable - selectionBackground transparent AWT, Swing, JavaFX & SWT 7
N GridBagLayout, leere grids (Hintergrund) transparent? AWT, Swing, JavaFX & SWT 3
SuperSeppel13 Komponente transparent übermalen AWT, Swing, JavaFX & SWT 2
R Swing Warum wird der Inhalt auch Transparent? AWT, Swing, JavaFX & SWT 8
Guybrush Threepwood JRadioButton transparent AWT, Swing, JavaFX & SWT 2
K JProgressBar transparent AWT, Swing, JavaFX & SWT 10
R JPanel Transparent AWT, Swing, JavaFX & SWT 3
Kr0e Png transparent AWT, Swing, JavaFX & SWT 1
G JTabbedPane transparent AWT, Swing, JavaFX & SWT 2
K Swing: ContentPane von JDialog ist transparent (Fehler) AWT, Swing, JavaFX & SWT 10
T nach resize transparent weg AWT, Swing, JavaFX & SWT 4
G JComboBox und JTable transparent AWT, Swing, JavaFX & SWT 18
G JButton transparent AWT, Swing, JavaFX & SWT 3
M Hintergrund Transparent machen? AWT, Swing, JavaFX & SWT 3
S Button transparent machen AWT, Swing, JavaFX & SWT 8
G schwarzen hintergrund von png transparent machen AWT, Swing, JavaFX & SWT 2
B JFrame Transparent darstellen AWT, Swing, JavaFX & SWT 4
S transparent + bewegen AWT, Swing, JavaFX & SWT 3
F Checkbox transparent machen ? AWT, Swing, JavaFX & SWT 2
S JTextArea background Transparent geht nicht AWT, Swing, JavaFX & SWT 23
L JScrollPane Transparent machen AWT, Swing, JavaFX & SWT 4
G hintergrund von JFrame/Container transparent machen AWT, Swing, JavaFX & SWT 2
D JWindow => transparent ? AWT, Swing, JavaFX & SWT 2
T BufferedImage Farbe "Transparent" AWT, Swing, JavaFX & SWT 21
lin Bild laden und transparent machen AWT, Swing, JavaFX & SWT 3
T JPanel Transparent machen AWT, Swing, JavaFX & SWT 5
J Rahmen vom Bild transparent machen AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben