Is het mogelijk om een canvas transparant te maken? Ik kom het als kleur niet tegen. Wel is er een functie getTransparancy(), maar het ontgaat mij even wat deze functie doet.
Ik geloof dat er laatst iemand op javalobby een transparant menu had gemaakt. Ik zoek het stukje even op.
[edit]
ze hebben geen search. Maar met een Swing component is het dus wel mogelijk.
[edit]
Je kan alle Swing componenten transparant maken met de methode setOpaque(boolean). Omdat je het over een Canvas hebt ben je kennelijk bezig met AWT, daar is transparantie voor zover ik weet niet mogelijk.
Dat transparante menu was een Swing Look and Feel met transparante menu's (volgens mij zelf een Skin voor de Skin Look and Feel). Die je heb dus verder niet echt nodig, want het kan gewoon standaard in Swing
.
Dat transparante menu was een Swing Look and Feel met transparante menu's (volgens mij zelf een Skin voor de Skin Look and Feel). Die je heb dus verder niet echt nodig, want het kan gewoon standaard in Swing
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment
In de klasse Color zit een constante OPAQUE (<-:?) maar daar heb ik wat mee zitten knutselen maar dat gaat niet zo best. De app moet met AWT gemaakt zijn, dus aan Swing heb ik niets.
Kan ik niet van een bepaalde pixel opvragen wat zijn kleur is?
Kan ik niet van een bepaalde pixel opvragen wat zijn kleur is?
Verwijderd
Gerlofsma heeft het niet voor niets over componenten ! (alleen daarin is het in awt mogelijk)
offtopic:Op maandag 10 december 2001 23:15 schreef JavaRules het volgende:
Gerlofsma
Ah nee, HOUD OP OVER DIE VENT!
(sorry, maar ook ik ben HvU-er)
"Hij doet 't niet" = onvolledige informatie
Componenten in AWT kunnen niet transparant zijn. Zie Component.isOpaque:
Je kan uiteraard wel transparant tekenen. Zie daarvoor bijvoorbeeld:
http://www.apl.jhu.edu/~hall/java/Java2D-Tutorial.html#Java2D-Tutorial-Transparency
Als Swing een optie is, zou ik daar snel op overstappen
Alle AWT componenten tekenen dus alle pixels in hun regio. Dus een component kan niet transparant zijn. Je kan wel een transparante kleur maken en deze proberen als achtergrond in te stellen, maar dit zal niet werken...code:
1 public boolean isOpaque()
Returns true if this component is completely opaque, returns false by default.
An opaque component paints every pixel within its rectangular region. A non-opaque component paints only some of its pixels, allowing the pixels underneath it to "show through". A component that does not fully paint its pixels therefore provides a degree of transparency. Only lightweight components can be transparent.
Subclasses that guarantee to always completely paint their contents should override this method and return true. All of the "heavyweight" AWT components are opaque.
Je kan uiteraard wel transparant tekenen. Zie daarvoor bijvoorbeeld:
http://www.apl.jhu.edu/~hall/java/Java2D-Tutorial.html#Java2D-Tutorial-Transparency
Als Swing een optie is, zou ik daar snel op overstappen
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment
Verwijderd
als ik alleen awt gebruik en geen graphics2D, dan lukt het mij door een component te extenden een rondje te laten bewegen zonder dat je een kompleet vierkant er omheen getekend ziet. Gebruik je canvas of panel en dus ook een containter die er tussen ligt, dan zie je dat vierkantje dus wel...
Met een 2 dubbele buffer is het dan zelfs mogelijk de flikkering die component met zich mee brengt compleet ongedaan te maken....
Met een 2 dubbele buffer is het dan zelfs mogelijk de flikkering die component met zich mee brengt compleet ongedaan te maken....
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHHHHHHHHHHHHHH hou op over gerlofsma!!!! je moet het inderdaad met een component doen robbie moet een subclasse worden van component. Zo moet het perse en als je dat bij die vent niet zo doet gaat hij erover zeiken want echt alles mag alleen maar op zijn manier.
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
GheheOp maandag 10 december 2001 23:18 schreef MrTinux het volgende:
[..]
offtopic:
Ah nee, HOUD OP OVER DIE VENT!
(sorry, maar ook ik ben HvU-er)
edit:
hmm ben niet de enige op got die met robbie bezig is zie ik
hmm ben niet de enige op got die met robbie bezig is zie ik
Wat je moet doen is het volgende (bij ons werkt het iig).
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| Class Robbie extends Component
{
.....
public void update(Graphics g)
{
paint(g); //niet de achtergrond wit maken, dan gaat het goed
}
public void paint(Graphics g)
{
g.fillOval(10,10,10,10);
}
....
} |
Succes ermee
[edit 2:off topic again]
Zijn er nog IV3B's onder jullie??
Gelukkig heb ik dat al een tijdje geleden gedaan
maar bij onze presentatie had die gozer net een hartaanval gehad dus toen kon hij bij ons er niet bij zijn
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Bij ons ook, moesten toen een GeldWissel Automaat maken. Hebben m toen bij Frederiks en van de Meer moeten presenteren... Wat zijn die gasten goed gelovig zeg
van de meer is gewoon een sukkel die niks weet en frederiks is gewoon een relaxte gozer.
toen van de meer net begon met lesgeven had ik een vriend geholpen met hun practicum te maken en toen zei hij bij het nabespreken dat hij er niks over durfde te zeggen omdat hij het niet snapte
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
hmm hoi project&klasgenoot HuibOp dinsdag 11 december 2001 19:03 schreef JavaRules wat geblaat
Mmm.. als je naam JavaRules is dan heb je ieder geval wel de goede school gekozen. Die sukkels bij de hvu willen perse alles in Java doen. Zelf voor het 7e sem vak compiler bouw moet het nog in java gebeuren
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Ach, de Java Compiler is ook in Java geschreven
.
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment
Op zich is java best geinig en handig voor RAD (zeker als je RationalRose 2001a gebruikt). Ok ik geef toe dat ik liever had gezien dat we meer met c++ bezig waren geweest, maar goed..
Nu ik dus ongeveer 1,5 jaar met java bezig ben, moet ik zeggen dat het me eigenlijk prima bevalt! Samen met een andere project/klasgenoot doen ik mee aan de programmeer wedstrijd van Ganz en dat gaan we zoveel mogelijk in java doen.
Zoals die 1e opdracht, pong, hebben we voor een groot gedeelte weer uit robbie kunnen halen!
Als je verder goede dev. tools gebruikt (CodeGuide van OmniCore+Rational Rose 2001a en niet Textpad en RR98, die zuigen erg hard..) wil je niet meer anders (ik iig niet)!
Maar goed, er zijn al talloze topics geweest met deze discussie...
Nu ik dus ongeveer 1,5 jaar met java bezig ben, moet ik zeggen dat het me eigenlijk prima bevalt! Samen met een andere project/klasgenoot doen ik mee aan de programmeer wedstrijd van Ganz en dat gaan we zoveel mogelijk in java doen.
Zoals die 1e opdracht, pong, hebben we voor een groot gedeelte weer uit robbie kunnen halen!
Als je verder goede dev. tools gebruikt (CodeGuide van OmniCore+Rational Rose 2001a en niet Textpad en RR98, die zuigen erg hard..) wil je niet meer anders (ik iig niet)!
Maar goed, er zijn al talloze topics geweest met deze discussie...
Op dinsdag 11 december 2001 20:11 schreef mbravenboer het volgende:
Ach, de Java Compiler is ook in Java geschreven.
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Hum, je volgt het volgens mij niet helemaal. De Java compiler is in Java geschreven en wordt niet naar native code gecompileerd. Dit cirkeltje is trouwens bij heel veel talen het geval (min of meer voor de lol somsrwb:ja vast wel en daarna hebben ze hem maar native gecompiled met de compiler die er nog niet was om zo hun eigen idee van platform onafhankelijkheid weg te gooien
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment
Heb je codeguide 4.0 preview al opgehaald? Die is namelijk helemaal fantastisch. Hij kan lang niet zoveel als IntelliJ Idea maar heeft 10x zo`n goeie syntax checking en het werkt een stuk prettiger. Codeguide is grandioos.Op dinsdag 11 december 2001 20:12 schreef Jelmer Barhorst het volgende:
(CodeGuide van OmniCore+Rational Rose 2001a en niet Textpad en RR98, die zuigen erg hard..) wil je niet meer anders (ik iig niet)!
Ow okeeOp dinsdag 11 december 2001 20:18 schreef mbravenboer het volgende:
[..]
Hum, je volgt het volgens mij niet helemaal. De Java compiler is in Java geschreven en wordt niet naar native code gecompileerd. Dit cirkeltje is trouwens bij heel veel talen het geval (min of meer voor de lol soms). De eerste compiler was niet in Java geschreven. Je moet uiteraard een bootstrapping mechanisme hebben. Tegenwoordig is hij echter 100% Java.
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Ik ga m meteen proberen!!Op dinsdag 11 december 2001 20:19 schreef Alarmnummer iets over codeguide 4
Die exe is gewoon een start punt waarin een Java VM wordt gestart en de Java compiler wordt aangeroepen. Een soort opgewaardeerd batch bestand dusrwb: Ow okeeja dat het wel kan snap ik ook wel. Maar dacht eigenlijk dat het niet zo zou zijn zeker omdat het ook als een exe is gecompiled ik zou eerder denken dat het dan nog als een jar zou zijn ofzo
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment
Ik gebruik textpad zowiezo niet. Ik ga echt niet op school op dat gare citrix zitten werken. Ik doe het wel thuis met visual j++ aangepast zodat hij de jdk van sun gebruikt. En rational rose is gewoon een kut programma. Zeker de versie die ze op school gebruiken. Heb nog nooit met een andere versie gewerkt dus ik weet niet hoe die zijn.Op dinsdag 11 december 2001 20:12 schreef Jelmer Barhorst het volgende:
Als je verder goede dev. tools gebruikt (CodeGuide van OmniCore+Rational Rose 2001a en niet Textpad en RR98, die zuigen erg hard..) wil je niet meer anders (ik iig niet)!
Maar goed, er zijn al talloze topics geweest met deze discussie...
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
ow dat is wel leuk om te weten ik zal er eens naar gaan kijkenOp dinsdag 11 december 2001 20:28 schreef mbravenboer het volgende:
[..]
Die exe is gewoon een start punt waarin een Java VM wordt gestart en de Java compiler wordt aangeroepen. Een soort opgewaardeerd batch bestand dus.Kijk maar eens naar alle bestandjes in de /bin directory. Ze zijn allemaal erg klein en ongeveer even groot
. De compiler zelf zit in lib/tools.jar . Je kan trouwens ook de source van de compiler downloaden als je de Sun Community Source licence ondertekend.
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Ach, textpad is best handig als je snel een textfile wil editten. Verder kan ik je vertellen dat RR2001a (gewoon te downloaden vanaf de Rational ftp, licentie is niet moeilijk aan te komen) errug lekker werkt! 't Is stabiel, heeft j2dk1.3 support, code genereren gaat heerlijk. Jammer alleen dat het zo'n ontzettend duur pakket is...Op dinsdag 11 december 2001 20:30 schreef rwb wat over Textpad, Visual J en RR
Ga zometeen eens dat IntelliJ Idea proberen.
[edit] Ik blijf lekker bij codeguide, vind IntelliJ traagjes en CodeGuide bied mij genoeg functionalteit.
ThanksOp dinsdag 11 december 2001 19:53 schreef Jelmer Barhorst het volgende:
Wat je moet doen is het volgende (bij ons werkt het iig).
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16Class Robbie extends Component { ..... public void update(Graphics g) { paint(g); //niet de achtergrond wit maken, dan gaat het goed } public void paint(Graphics g) { g.fillOval(10,10,10,10); } .... }
Succes ermee
[edit 2:off topic again]
Zijn er nog IV3B's onder jullie??
BTW ik heb niets met IV3B of waar iedereen het over heeft te maken.
Oh gewoon repaint(), maar dan gaat er iets anders fout en dat is dat het helemaal niet getekend wordt 
Ik heb gewoon een Canvas veranderd in Component, en die public void update toegevoegd, moet er nog meer bij?
Ik heb gewoon een Canvas veranderd in Component, en die public void update toegevoegd, moet er nog meer bij?
Hum, ik ben benieuwd hoe je dat wilt gaan organiseren: toch niet goed begrepen dus
.
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment
Verwijderd
op het canvas/applet
gebruik voor alles wat vierkant mag zijn gewoon canvassen of panels. voor de rest gebruik je dus componenten die je gewoon add aan je canvas/applet. een repaint in je applet/canvas roept dan alle componenten die zich op hem bevinden aan om zich even op hem te painten.
gebruik voor alles wat vierkant mag zijn gewoon canvassen of panels. voor de rest gebruik je dus componenten die je gewoon add aan je canvas/applet. een repaint in je applet/canvas roept dan alle componenten die zich op hem bevinden aan om zich even op hem te painten.
nu jullie het toch over canvassen hebben enzo:
als ik een appletje met daarop een canvas start in de appletviewer wordt de update-methode niet aangeroepen (paint uiteraard wel)...?
Ligt dit aan de appletviewer ofzo? (ik kan me herinneren dat ik al meer dan twee jaar geleden ook al ondervonden heb (toen jdk 1.2, nu jdk 1.4)).
als ik een appletje met daarop een canvas start in de appletviewer wordt de update-methode niet aangeroepen (paint uiteraard wel)...?
Ligt dit aan de appletviewer ofzo? (ik kan me herinneren dat ik al meer dan twee jaar geleden ook al ondervonden heb (toen jdk 1.2, nu jdk 1.4)).
putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]
wat een hvu feest hier
(iv5it hiero, net als rwb
)
oh, aan alle hvu mensen: check ook effe dit topic op gameskool
oh, aan alle hvu mensen: check ook effe dit topic op gameskool
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Tsktsk niet je huiswerk vragen hier 
En helemaal niet in mijn vrije weekend over gerlofsma beginnen
btw IV3A is echt veel beter
En helemaal niet in mijn vrije weekend over gerlofsma beginnen
btw IV3A is echt veel beter
Did you know that IF is a middle word in life. "Ja maar wie ben ik om aan mezelf te twijfelen"
Verwijderd
ja dat van die update die niet aangeroepen wordt, zulk soort bevindingen hadden 'mephisto' en ik dus ook...
(System.out.println gaf geen kik)
maar het schijnt dat deze wel degelijk aangeroepen wordt in bepaalde situaties. misschien dat 'stokey' ook op dit forum rond zwerft, hij weet er zeker meer over !
en anders jelmer misschien ???
(System.out.println gaf geen kik)
maar het schijnt dat deze wel degelijk aangeroepen wordt in bepaalde situaties. misschien dat 'stokey' ook op dit forum rond zwerft, hij weet er zeker meer over !
en anders jelmer misschien ???
edit:
dis nie alleen in applets en canvassen, maar ook in gewone progs en panels.
dis nie alleen in applets en canvassen, maar ook in gewone progs en panels.
Verwijderd
Inderdaad, bedoelde ik. (overigens heb ik het ook nog met iets anders dan System.out.println gecheckt om zeker te zijn dat het niet aan System.out.println lag).ja dat van die update die niet aangeroepen wordt, zulk soort bevindingen hadden 'mephisto' en ik dus ook...
(System.out.println gaf geen kik)
Als iemand een oplossing heeft: graag!maar het schijnt dat deze wel degelijk aangeroepen wordt in bepaalde situaties. misschien dat 'stokey' ook op dit forum rond zwerft, hij weet er zeker meer over !
en anders jelmer misschien ???
Anders zit er niets anders op dan het canvas weg te doen en wat er op het canvas moet komen via de applet (daarvan wordt de hergedefinieerde update wel aangeroepen). Dit is alleen niet zo'n mooie oplossing (maar omdat wat er getekent moet worden niet af hangt van de oorsprong moet het op zich geen probleem zijn).
Om de layout dat netjes te krijgen zou je dan de canvas kunnen gebruiken... maar dan moet deze transparant zijn
Ah, maar bij mij wordt de herdefinitie van update in Applet wel aangeroepen...?dis nie alleen in applets en canvassen, maar ook in gewone progs en panels.
Uit de javadocs (java.awt.Component)
update(Graphics)
update(Graphics)
Paint(Graphics)The AWT calls the update method in response to a call to repaint. The appearance of the component on the screen has not changed since the last call to update or paint. You can assume that the background is not cleared.
The updatemethod of Component calls this component's paint method to redraw this component. This method is commonly overridden by subclasses which need to do additional work in response to a call to repaint. Subclasses of Component that override this method should either call super.update(g), or call paint directly.
The origin of the graphics context, its (0, 0) coordinate point, is the top-left corner of this component. The clipping region of the graphics context is the bounding rectangle of this component.
This method is called when the contents of the component should be painted in response to the component first being shown or damage needing repair. The clip rectangle in the Graphics parameter will be set to the area which needs to be painted. Subclasses of Component that override this method need not call super.paint(g).
Verwijderd
Ja, dit heb ik al eens eerder gelezen... maar ehm, ik zie niet wat dit met het probleem te maken heeft?
In die tekst staat dat bijvoorbeeld update wordt aangeroepen bij een repaint. En dat doet hij nu juist niet...
Of mis ik iets
In die tekst staat dat bijvoorbeeld update wordt aangeroepen bij een repaint. En dat doet hij nu juist niet...
Of mis ik iets
Verwijderd
Hebbie het over mij ???Op zaterdag 15 december 2001 02:46 schreef JavaRules het volgende:
ja dat van die update die niet aangeroepen wordt, zulk soort bevindingen hadden 'mephisto' en ik dus ook...
(System.out.println gaf geen kik)
Verwijderd
lees dan het onderstaande regeltje nog ff door...
the screen has not changed since the last call to update or paint
er wordt dus alleen geupdate als het nodig is, maw omdat er iets in het beeld veranderd is!
the screen has not changed since the last call to update or paint
er wordt dus alleen geupdate als het nodig is, maw omdat er iets in het beeld veranderd is!
Verwijderd
Een transparant canvas maken is mogelijk met een omweggetje.
In java (vanaf welke versie weet ik niet) zit op een gegeven moment een class Robot. met die class kan je screenshots maken.
Maak dus een screenshot van het onderliggende panel, en ros dit plaatje op je canvas. Teken daarna rotzooi eroverheen.
Als transparantie totaal moet zijn, kan je 'm laten bijwerken.
Dit is ook een trucje om transparante frames te maken. Capture het bureaublad erachter, en zet die image als background, en voila, het LIJKT transparant...
In java (vanaf welke versie weet ik niet) zit op een gegeven moment een class Robot. met die class kan je screenshots maken.
Maak dus een screenshot van het onderliggende panel, en ros dit plaatje op je canvas. Teken daarna rotzooi eroverheen.
Als transparantie totaal moet zijn, kan je 'm laten bijwerken.
Dit is ook een trucje om transparante frames te maken. Capture het bureaublad erachter, en zet die image als background, en voila, het LIJKT transparant...
Verwijderd
Maar als ik een ander venster eroverheen haal dan roept 'ie update nog steeds niet aan.er wordt dus alleen geupdate als het nodig is, maw omdat er iets in het beeld veranderd is!
Verwijderd
JavaRules was weer lekker op dreef 
het klopt dat update() alleen wordt aangeroepen
als er iets veranderd is ... anders wordt alleen
paint() aangeroepen
en om ff lekker irritant te doen...
die methode van whitehead is wel origineel,
alleen niet zo effieciënt als je beseft dat
java.awt.Component al een tranparante Canvas IS
Canvas is daardoor alleen 'handig' omdat isOpaque() == true
het klopt dat update() alleen wordt aangeroepen
als er iets veranderd is ... anders wordt alleen
paint() aangeroepen
en om ff lekker irritant te doen...
die methode van whitehead is wel origineel,
alleen niet zo effieciënt als je beseft dat
java.awt.Component al een tranparante Canvas IS
Canvas is daardoor alleen 'handig' omdat isOpaque() == true
Verwijderd
ja en laastst had je het, geloof ik, over nog een interne buffer ergens, wat was daar ook alweer precies mee?
Verwijderd
Component is bij mijn weten ook niet transparant!
Plaats hem maar es over een image heen, dat getekend is op een frame bijvoorbeeld...
Plaats hem maar es over een image heen, dat getekend is op een frame bijvoorbeeld...
Verwijderd
Har, har! geen IV3B, wel IV5IT.Zijn er nog IV3B's onder jullie??
Ik heb "Erik" (Gerlofsma) voor het vak Gedistribueerde Systemen. Het mag af en toe een beetje een excentrieke gast zijn, maar het is wel een goede leraar
wie ben jij dan?Op zondag 16 december 2001 23:20 schreef ManiaXe het volgende:
[..]
Har, har! geen IV3B, wel IV5IT.
Ik heb "Erik" (Gerlofsma) voor het vak Gedistribueerde Systemen. Het mag af en toe een beetje een excentrieke gast zijn, maar het is wel een goede leraar
ik ben dat irritante mannetje met dat korte oranje/rode haar en 3 piercings in mijn rechter wenkbrauw
.edit: goh die profiles doen wonderen
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Verwijderd
bijna, het is nl. Eric met een c !Op zondag 16 december 2001 23:20 schreef ManiaXe het volgende:
"Erik" (Gerlofsma)
Het mag af en toe een beetje een excentrieke gast zijn, maar het is wel een goede leraar
en hij is zeker excentriek maar ook degelijk wel goed ja!
en whitehead, wat is dan jouw verklaring voor dat als je in een component een rondje tekend, hij geen vierkant als achtergrond neemt?
haha hij lijkt eigenlijk wel op deze smile --> 
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Oke als toch de hele HvU hier post dan kan ik natuurlijk niet buiten spel blijven staan 
Hier dus mijn bijdrage uit IV3B
Hier dus mijn bijdrage uit IV3B
Pagina: 1