Information Technology Reference
In-Depth Information
ctx.strokeRect(0,0,320,320);
return cvs;
};
Für jeden dieser drei Ausschnitte erzeugen wir in einem zweiten Schritt den
Spiegeleffekt und speichern ihn im Array effects .
var effects = [];
for (var i=0; i<icons.length; i++) {
effects[i] = createReflection(icons[i]);
}
Die Hauptarbeit findet dabei in der Funktion createReflection() statt, deren
leicht modifizierter Code einem Posting in Charles Yings blog about art, mu-
sic, and the art of technology über den CoverFlow -Effekt des iPhones entstammt
(siehe den verkürzten Weblink http://bit.ly/b5AFW6 ).
var createReflection = function(icon) {
var cvs = document.createElement("CANVAS");
var ctx = cvs.getContext('2d');
cvs.width = icon.width;
cvs.height = icon.height/2.0;
// flip
ctx.translate(0,icon.height);
ctx.scale(1,-1);
ctx.drawImage(icon,0,0);
// fade
ctx.setTransform(1,0,0,1,0,0);
ctx.globalCompositeOperation = "destination-out";
var grad = ctx.createLinearGradient(
0,0,0,icon.height/2.0
);
grad.addColorStop(0,'rgba(255,255,255,0.5)');
grad.addColorStop(1,'rgba(255,255,255,1.0)');
ctx.fillStyle = grad;
ctx.fillRect(0,0,icon.width,icon.height/2.0);
return cvs;
};
In createReflection() wird zuerst über einen weiteren In-memory -Canvas die
untere Hälfte des in icon übergebenen Bildausschnitts umgeklappt. Erinnern
wir uns an die Kürzel für Transformationsmatrizen, könnten wir das Umklap-
pen mit der Matrix für flipY() realisieren. In diesem Fall verwenden wir al-
Search WWH ::




Custom Search