| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| n00b Registriert seit: Dec 2004
Beiträge: 94
| Fläche schraffieren
Hi! Ich möchte eine Funktion schreiben, mit der ich ein Rechteck schraffieren kann, da ich nirgends etwas dergleichen gefunden habe. Ich schaffe es jedoch leider nicht. Mein momentaner Code sieht so aus: Code: //o = zielobjekt, f1 = hintergrundfarbe, f2 = schraffurfarbe, f3 = randfarbe
drawHatchedForm = function(o, x, y, w, h, f1, f2, f3)
{
var abstand=10;
with(o)
{
beginFill(f1);
moveTo(x, y);
lineTo(x+w, y);
lineTo(x+w, y+h);
lineTo(x, y+h);
lineTo(x, y);
endFill();
lineStyle(3, f2);
for(i=x; i<(x+w-h); i+=abstand)
{
// -1 und +1 damit nicht aus der fläche hinausgezeichnet wird
moveTo(i+1, y+h-1);
lineTo(i+h+1, y+1);
}
lineStyle(2, f3);
moveTo(x, y);
lineTo(x+w, y);
lineTo(x+w, y+h);
lineTo(x, y+h);
lineTo(x, y);
}
} Code: drawHatchedForm(_root.formen, 20, 20, 120, 40, 0xFF8080, 0x80FF80, 0xFFFF00); Ich bitte darum, dass mir jemand helfen kann, oder vielleicht sogar schon eine fertige Schraffur-Funktion hat. Gruß m0m0 |
| | |
| | #2 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.322
|
"..Somit bleibt aber links und rechts jeweils ein kleines Dreieck (oder ein bisschen mehr) frei.." dann wirst du halt noch 2 for schleifen für diese dreiecke ergänzen müssen. und denke daran, dass ein rechteck auch höher als breit sein kann. oder zieh ein rechteck als maske auf und maskiere deine schraffuren. so gehts auch mit anderen konturen als nur mit rechtecken.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (28-07-2006 um 19:22 Uhr) |
| | |
| | #3 (permalink) |
| n00b Registriert seit: Dec 2004
Beiträge: 94
|
Ich habs jetzt hinbekommen. Ich habe immer + und - 1 überall stehen gehabt, damit die diagonalen Linien nicht über den Hintergrund hinausstehen, und deshalb hat es nicht funktioniert. Ohne den Korrekturen (und einfach mit einer dickeren Umrandungslinie) funktioniert es prima. An die Möglichkeit mit einer Maske hab ich auch schon gedacht, allerdings wollte ich es ohne Maske lösen, also einfach nur mit simplen Zeichenoperationen. Für diejenigen, die die Funktion brauchen können, hier ist sie: Code: //o = zielobjekt, f1 = hintergrundfarbe, f2 = schraffurfarbe, f3 = randfarbe
drawHatchedForm = function(o, x, y, w, h, f1, f2, f3)
{
if(w < 0 || h < 0) return;
var abstand=10;
var breite=3;
with(o)
{
beginFill(f1);
moveTo(x, y);
lineTo(x+w, y);
lineTo(x+w, y+h);
lineTo(x, y+h);
lineTo(x, y);
endFill();
lineStyle(breite, f2);
for(i=x-h; i<(x+w); i+=abstand)
{
var x1=i;
var y1=y+h;
var x2=i+h;
var y2=y;
if(i<x)
{
var diff = x-i;
x1+=diff;
y1-=diff;
}
if(i>(x+w-h))
{
diff = x+w-h-i;
x2+=diff;
y2-=diff;
}
moveTo(x1, y1);
lineTo(x2, y2);
}
lineStyle(3, f3);
moveTo(x, y);
lineTo(x+w, y);
lineTo(x+w, y+h);
lineTo(x, y+h);
lineTo(x, y);
}
} |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |