edebroMedlem sedan aug. 2001261 inlägg Jag ska göra en uppgift som ser ut som följande:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class uppg5 extends Applet {
public void init() {
setBackground(Color.yellow);
Font F = new Font("Verdana", Font.BOLD, 16);
setFont(F);
FlowLayout L = new FlowLayout(FlowLayout.CENTER, 15, 50);
setLayout(L);
Button knapp1 = new Button("Röd");
Button knapp2 = new Button("Blå");
Button knapp3 = new Button("Ljusare");
Button knapp4 = new Button("Mörkare");
add(knapp1);
add(knapp2);
add(knapp3);
add(knapp4);
}
public boolean action(Event evt, Object arg) {
if (evt.target instanceof Button){
String text = (String)arg;
if (text.equals("Röd")) {
setBackground(Color.red);
repaint();
} else if (text.equals("Blå")) {
setBackground(Color.blue);
repaint();
} else if (text.equals("Ljusare")) {
setBackground(Color.cyan);
repaint();
} else if (text.equals("Mörkare")) {
int color2 = getBackground();
setBackground(Color.green);
repaint();
}
}
return true;
}
}
det är altså 4 knappar, Dom 2 första ändrar bakgrundsfärgen till Röd resp Blå
Sen om man klickar på knappen "Ljusare" så ska bakgrundsfärgen bli lite ljusare och mörkare om man klickar på knappen "Mörkare"
Ni kan ignorera en del av koden som jag bara satte dit för att kolla att allt fungerade.
Jag såg i Java API:n att det finns en funktion som heter Brighter() och en annan som heter Darker()
Är det nåt att använda kanske?
Sen undrar jag hur man tar upp RGB värdena på bakgrunden. Testade getBackground() men det funkerade inte : )
Nån som har en smidig lösning?
------------------
Mikael Edebro
http://divx.edebro.net
LimeMedlem sedan sep. 2001961 inlägg
int color2 = getBackground();
getBackground() returnerar en Color och inte en int.
Vad gäller färger är det liiiite knepigt. Color delas in i fyra olika delar; Röd, Grön, Blå (RGB) och Alpha.
Metoderna darker() och brighter() tar den färg man applicerar metoden på och genom en aritmetisk operation som nästan (men inte helt) följer PMS-RGB-skalans färger så tar den nästa färg i skalan. Om man gör 10 åt ena hållet och 10 åt andra hållet så kommer man inte tillbaka till samma färg på grund av avrundningsfel.
Det går även att modifiera färgerna själv, enligt lämplig algoritm för vad en nyans mörkare respekive ljusare är jämfört med ursprungsfärgen.
I ditt fall skulle jag nog göra såhär:
pseudokod... inte nödvändigtvis korrekt..
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
if (darker) {
Color original = component.getColor();
Color darkerColor = original.darker();
component.setColor(darkerColor);
}
och samma sak för ljusare...
/Lime
------------------
Praeterea conseo microsoftenem esse delendam.
- modernt latinskt ordspråk
edebroMedlem sedan aug. 2001261 inlägg okej....men annars går det kanske bara att definiera några variabler som ska agera RGB värden, ex
int colorBlue = 255;
int colorRed = 255;
int colorAdjust = 0;
sen typ:
Color rodFarg = new Color(colorRed, colorAdjust, colorAdjust);
sen samma sak med den blåa.
Sen för att ljusa upp dom kan man bara subtrahera från t ex colorRed
Tror du det fungerar?
Fast då blir ju problemet att veta vilken färg det är just nu....men då kan man kanske sätta en variabel till true eller nåt när den byter färg till Blå
Jaja, det löser sig nog i slutändan
------------------
Mikael Edebro
http://divx.edebro.net
LimeMedlem sedan sep. 2001961 inlägg Det var prexis det jag menade med att man använder sig av en egen algoritm. Nu finns det iofs en massa skalor man kan använda sig av och de definierar även vad som är ljusare och mörkare...
/Lime
------------------
Praeterea conseo microsoftenem esse delendam.
- modernt latinskt ordspråk