Viertelkreise mit JS und Canvas

ComFreek

Mod | @comfreek
Moderator
Hallo an alle,

wie bekomme ich Viertelkreise mit JS und Canvas hin? Ich bekomme nur Halbkreise, Vollkreise und "komische" Teilkreise hin.
Hier ist mein bisheriger Code:
Javascript:
// ctx ist der Kontext des Canvas
Degree = 180;  // Halbkreis kommt raus
Degree = 360;  // Vollkreis kommt raus
Degree = 90;    // "komischer" Teilkreis kommt raus, siehe Bild

ctx.arc(X, Y, R, 0, (Math.PI*Degree)/180, false);

Wie bekomme ich das hin?
Vielen Dank im Voraus!
 

Anhänge

  • 2010-08-14_133624.png
    2010-08-14_133624.png
    808 Bytes · Aufrufe: 586
  • 2010-08-14_133552.png
    2010-08-14_133552.png
    533 Bytes · Aufrufe: 579
  • 2010-08-14_133409.png
    2010-08-14_133409.png
    516 Bytes · Aufrufe: 580
Hi,

beweg den Pfad zunächst mittels moveTo in den Mittelpunkt des Kreises.
Code:
ctx.beginPath();
ctx.moveTo(X, Y);
ctx.arc(X, Y, R, 0, (Math.PI*90)/180, false);
ctx.closePath();
Ausserdem solltest du einen neuen Pfad beginnen und diesen auch wieder schliessen. Sonst reagieren diverse Browser unter Umständen recht eigenartig.

Ciao
Quaese
 
Quaese hat gesagt.:
Ausserdem solltest du einen neuen Pfad beginnen und diesen auch wieder schliessen. Sonst reagieren diverse Browser unter Umständen recht eigenartig.
Danke, aber ich habe den Code nur mal schnell kopiert und etwas rausgelöscht ;)

Jetzt bekomme ich einen Viertelkreis hin, vielen Dank. Zur Übung will ich jetzt einen ganzen Kreis aus vier Viertelkreisen zusammenbauen. Bis jetzt bekomme ich nur die rechte Seite hin:
Javascript:
function Draw()
    {
      ctx = document.getElementById("canvas").getContext("2d");
      
      ctx.fillStyle = "rgba(255,0,0,1)";
      
      ctx.beginPath();
        ctx.moveTo(50, 50);
        ctx.arc(50, 50, 50, 0, (Math.PI*270)/180, true);
      
        ctx.moveTo(50, 50);
        ctx.arc(50, 50, 50, 0, (Math.PI*90)/180, false);
      ctx.closePath();
      
      ctx.fill();
      ctx.stroke();
    }
Weiß jemand, wie die anderen Teile gehen?
 

Anhänge

  • 2010-08-15_144259.png
    2010-08-15_144259.png
    985 Bytes · Aufrufe: 554
Hi,

du drehst einmal mit und einmal gegen den Uhrzeigersinn, aber jedes Mal mit einem grösseren Winkel im zweiten Argument.

Weiterhin musst du für jeden Viertelkreis einen neuen Pfad erstellen und diesen schliessen.

Mein Vorschlag für einen Vollkreis aus Viertelkreisen:
Code:
for(var i=0; i<4; i++){
  ctx.beginPath();
  ctx.moveTo(50, 50);
  ctx.arc(50, 50, 50, (i*Math.PI/2), ((i+1)*Math.PI/2), false);
  ctx.fillStyle = "rgba("+(255-i*40)+",0,0,1)";
  ctx.closePath();
  ctx.fill();
  ctx.stroke();
}
Ciao
Quaese
 

Neue Beiträge

Zurück