Merhaba aşağıdakı scriptle önce 3 tane kırmızı karen,daha sonra 1 tane sarı kare çekilmesi lazım.Ama hepsi sarı oluyor. kırmızıları ayrı beginPath-closePathde, sarıyı da ayrı beginPath-closePathde yazdığımda sorun olmuyor.Ben bunu save() ile yapmak istiyorum.Yani kırmızıları çektikden sonra save() yapsın daha sonra da sarıyı çeksin.Nasıl yapa bilirim?Teşekkürler

           context.beginPath();
                context.fillStyle = "#000000";
                context.fillRect(50, 50, 300, 300);

                context.fillStyle = "red";
                context.fillRect(20, 20, 100, 100);

                context.fillRect(140, 20, 110, 100);

                context.globalCompositeOperation = "destination-over";
                context.fillRect(20, 150, 100, 100);
            context.closePath();

            context.beginPath();
                context.globalCompositeOperation = "source-over";
                context.globalAlpha = 0.5;
                context.fillRect(140, 150, 110, 100);
            context.closePath();

Şöyle yapmak istiyorum:

                context.fillStyle = "#000000";
                context.fillRect(50, 50, 300, 300);

                context.fillStyle = "red";
                context.fillRect(20, 20, 100, 100);

                context.fillRect(140, 20, 110, 100);

                context.globalCompositeOperation = "destination-over";
                context.fillRect(20, 150, 100, 100);

                context.save();

                context.globalCompositeOperation = "source-over";
                context.globalAlpha = 0.5;
                context.fillRect(140, 150, 110, 100);

soruldu: 11 Haz '13, 04:54

Serxan's gravatar image

Serxan
51691106107
cevap kabul oranı: 46%

değiştirildi: 15 Haz '13, 01:21

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183


beginPath() metodu zaten nesnenin o andaki durumunu yeniler / resetler. save() metodu ise, nesnenin o andaki durumunu stack alanına taşır, restore() metodu ile stack' e taşınan nesnede geri çağrılabilir.

Anladığım kadarıyla sen nesnenin içeriğini değiştirmek istiyorsun ( rengini ) o zaman bu tür bir eylem için şansın yok. Tam tersine transform gibi birşey kullanmak isteseydin, save() metodu işini görebilirdi.

Uzun lafın kısası, save() metudu, nesneyi olduğu gibi stack alanına taşır, başka birşey yapmaz. restore() dediğin de, son saklanan nesnenin durumunu yeni oluşturulan nesneye aktarılır.

permanent link

cevaplandı: 11 Haz '13, 07:54

O%C4%9Fuz%20%C3%87elikdemir's gravatar image

Oğuz Çelikdemir
2.0k52234
cevap kabul oranı: 13%

değiştirildi: 11 Haz '13, 07:55

Şimdi bir belge okuyordum ki sen aklıma geldin. Daha önceden bunun mümkün olmadığını söylemiştim fakat iOS7 ile gelen yeniliklerden biriside (Safari) save metodunun kullanılabilir olması. Daha önceden canvas ta path leri save edip tekrar kullanabilme şansımız yoktu. iOS7 ile bu problem ortadan kaldırılmış. Merak edersen aşağıdaki linkleri kontrol et lütfen :

iOS 7 Safari & New Web Platform Features
HTML Canvas Path object in WebKit

permanent link

cevaplandı: 22 Eyl '13, 02:49

O%C4%9Fuz%20%C3%87elikdemir's gravatar image

Oğuz Çelikdemir
2.0k52234
cevap kabul oranı: 13%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×23

Soruldu: 11 Haz '13, 04:54

Görüntüleme: 1,057 kez

Son güncelleme: 22 Eyl '13, 02:49

powered by BitNami OSQA