Henüz Üye Degilmisin ? Üye Ol | Parolamı Unuttum
Paneli Kapat
SANALGUCLULER Hack ve Güvenlik Platformu  

HTML5 Canvas ve Chart uygulaması

HTML5 ile gelen en önemli yeniliklerden birisinin Canvas olduğu kesindir. Canvas (Tuval) elementini kullanarak her pikseli ek***siz bir kontrol imkanı ile dinamik olarak grafikleri, cizelgeleri, resimleri ve animasyonlarını oluşturabilir ve işleyebiliriz.. Bunun elbetteki çok büyük avantajları var. Örneğin sayfalarımıza koyduğumuz yüksek boyutlu image lerden Canvas sayesinde kurtulabilir ve sayfalarımızın boyutunu

AnaSayfa Kimler Online Bugünki Mesajlar Forumları Okundu Kabul Et
Go Back   SANALGUCLULER Hack ve Güvenlik Platformu > Web Programlama Dilleri > HTML-XHTML

Yeni Konu aç  Cevapla
 
LinkBack Seçenekler Stil
Alt 15 Ocak 2012, 14:08   #1
Mareşal
Ceybi Nickli Üyenin Kullanıcı Resmi (Avatar)
Üyelik Tarihi: 12 Ocak 2012
Mesajlar: 789
Rep Puanı : 10
Rep Derecesi : Ceybi isimli üye Tecrübe puanını kapatmıştır.
Standart HTML5 Canvas ve Chart uygulaması

HTML5 ile gelen en önemli yeniliklerden birisinin Canvas olduğu kesindir. Canvas (Tuval) elementini kullanarak her pikseli ek***siz bir kontrol imkanı ile dinamik olarak grafikleri, cizelgeleri, resimleri ve animasyonlarını oluşturabilir ve işleyebiliriz.. Bunun elbetteki çok büyük avantajları var. Örneğin sayfalarımıza koyduğumuz yüksek boyutlu image lerden Canvas sayesinde kurtulabilir ve sayfalarımızın boyutunu küçültebiliriz. Tabi Canvas için iyi bir JavaScript bilgisinin olması gerektiğini unutmamak gerekir. Hatta HTML5'in sırtını JavaScript'e dayadığı düşünülürse ve HTML5'in geleceğin standartlarını belirleyeceği gerçeği ile JavaScript kitaplarımızın raflardan indirilmesi gerektiğini söylemem gerekir.

Canvas öğelerini web sayfanızda kullandığımız zaman sayfamızda default olarak 300px genişliğinde ve 150px yüksekliğinde bir dikdörtgen oluşur. Ama genişlik ve yükseklik gibi boyutları yanısıra diğer canvas(tuval) elemanlarının niteliklerini özelleştirebiliriz.

PHP- Kodu:
<canvas></canvas
Canvas Coordinates (Tuval Kordinatları) aşağıdaki şekilde gösterildiği gibi x ve y kordinatları ile belirlenir. En üst sol köşeden başlar ve genel itibari bu nokta orjin olarak adlandırılır. Yatay olarak X ekseni, dikey olarak da Y ekseni olarak işlem yapılır.



Tabi sayfamızda Canvas API lerini kullanmak oldukça kolaydır.

PHP- Kodu:
<canvas height="250" width="250"></canvas
Bu durumda canvası 250’ye 250 piksel ölçülerinde bir dikdörtgen olarak sayfanıza eklenmiş olur. Eğer yazının devamını okumadan bu işlemi yaptıysanız ve sayfanızda birşey görmüyorsanız "offf olmadu yahu" diye homurdanmayın. İşlemi başarı ile gerçekleştirdiniz. Fakat çevresinde bir kenarlık olmadığından görünmüyor olması gayet normal. Çevresine bir kenarlık eklemek isterseniz aşağıdaki gibi bir bildirim işinizi görecektir.,

PHP- Kodu:
<canvas id="cnvs1" style="border: 1px solid;" width="250" height="250">
</
canvas
Yukarıda dikkat ederseniz Canvas için birde ID bildiriminde bulunduk. Canvas'a programsal olarak erişmemiz için olmaz olmaz durumundadır.

Şimdi dilerseniz bir çizgi ile Canvas için bir örnekleme yapalım...




Projeyi çalıştırdığımızda ;




Sonuç oldukça keyif verici bir görüntü

Şimdi olayı biraz daha verimli halen getirmek için başka bir örnek üzerinden makaleye devam edelim..

Artık projelerimizde raporlamalar ve bu raparlamaların bazılarının sayfalarımızda grafiksel olarak gösterimi kaçınılımaz. Bu noktada HTML5 Canvas API lerinden faydalanarak bu grafik tasarımını gerçekleştirmeye çalışalım..



PHP- Kodu:
canvasChart.js

var CanvasChart = function () {
    var 
ctx;
    var 
margin = { top40left75right0bottom75 };
    var 
chartHeightchartWidthyMaxxMaxdata;
    var 
maxYValue 0;
    var 
ratio 0;
    var 
renderType = { lines'lines'points'points' };

    var 
render = function(canvasIddataObj) {
        
data dataObj;
        
getMaxDataYValue();
        var 
canvas document.getElementById(canvasId);
        
chartHeight canvas.getAttribute('height');
        
chartWidth canvas.getAttribute('width');
        
xMax chartWidth - (margin.left margin.right);
        
yMax chartHeight - (margin.top margin.bottom);
        
ratio yMax maxYValue;
        
ctx canvas.getContext("2d");
        
renderChart();
    };

    var 
renderChart = function () {
        
renderBackground();
        
renderText();
        
renderLinesAndLabels();

        
//render data based upon type of renderType(s) that client supplies
        
if (data.renderTypes == undefined || data.renderTypes == nulldata.renderTypes = [renderType.lines];
        for (var 
0data.renderTypes.lengthi++) {
            
renderData(data.renderTypes[i]);
        }
    };

    var 
getMaxDataYValue = function () {
        for (var 
0data.dataPoints.lengthi++) {
            if (
data.dataPoints[i].maxYValuemaxYValue data.dataPoints[i].y;
        }
    };

    var 
renderBackground = function() {
        var 
lingrad ctx.createLinearGradient(margin.leftmargin.topxMax margin.rightyMax);
        
lingrad.addColorStop(0.0'#D4D4D4');
        
lingrad.addColorStop(0.2'#fff');
        
lingrad.addColorStop(0.8'#fff');
        
lingrad.addColorStop(1'#D4D4D4');
        
ctx.fillStyle lingrad;
        
ctx.fillRect(margin.leftmargin.topxMax margin.leftyMax margin.top);
        
ctx.fillStyle 'black';
    };

    var 
renderText = function() {
        var 
labelFont = (data.labelFont != null) ? data.labelFont '20pt Arial';
        
ctx.font labelFont;
        
ctx.textAlign "center";

        
//Title
        
var txtSize ctx.measureText(data.title);
        
ctx.fillText(data.title, (chartWidth 2), (margin.top 2));

        
//X-axis text
        
txtSize ctx.measureText(data.xLabel);
        
ctx.fillText(data.xLabelmargin.left + (xMax 2) - (txtSize.width 2), yMax + (margin.bottom 1.2));

        
//Y-axis text
        
ctx.save();
        
ctx.rotate(-Math.PI 2);
        
ctx.font labelFont;
        
ctx.fillText(data.yLabel, (yMax 2) * -1margin.left 4);
        
ctx.restore();
    };

    var 
renderLinesAndLabels = function () {
        
//Vertical guide lines
        
var yInc yMax data.dataPoints.length;
        var 
yPos 0;
        var 
yLabelInc = (maxYValue ratio) / data.dataPoints.length;
        var 
xInc getXInc();
        var 
xPos margin.left;
        for (var 
0data.dataPoints.lengthi++) {
            
yPos += (== 0) ? margin.top yInc;
            
//Draw horizontal lines
            
drawLine(margin.leftyPosxMaxyPos'#E8E8E8');

            
//y axis labels
            
ctx.font = (data.dataPointFont != null) ? data.dataPointFont '10pt Calibri';
            var 
txt Math.round(maxYValue - ((== 0) ? yPos ratio));
            var 
txtSize ctx.measureText(txt);
            
ctx.fillText(txtmargin.left - ((txtSize.width >= 14) ? txtSize.width 10) - 7yPos 4);

            
//x axis labels
            
txt data.dataPoints[i].x;
            
txtSize ctx.measureText(txt);
            
ctx.fillText(txtxPosyMax + (margin.bottom 3));
            
xPos += xInc;
        }

        
//Vertical line
        
drawLine(margin.leftmargin.topmargin.leftyMax'black');

        
//Horizontal Line
        
drawLine(margin.leftyMaxxMaxyMax'black');
    };

    var 
renderData = function(type) {
        var 
xInc getXInc();
        var 
prevX 0
            
prevY 0;

        for (var 
0data.dataPoints.lengthi++) {
            var 
pt data.dataPoints[i];
            var 
ptY = (maxYValue pt.y) * ratio;
            if (
ptY margin.topptY margin.top;
            var 
ptX = (xInc) + margin.left;

            if (
&& type == renderType.lines) {
                
//Draw connecting lines
                
drawLine(ptXptYprevXprevY'black'2);
            }

            if (
type == renderType.points) {
                var 
radgrad ctx.createRadialGradient(ptXptY8ptX 5ptY 50);
                
radgrad.addColorStop(0'Green');
                
radgrad.addColorStop(0.9'White');
                
ctx.beginPath();
                
ctx.fillStyle radgrad;
                
//Render circle
                
ctx.arc(ptXptY80Math.PIfalse)
                
ctx.fill();
                
ctx.lineWidth 1;
                
ctx.strokeStyle '#000';
                
ctx.stroke();
                
ctx.closePath();
            }

            
prevX ptX;
            
prevY ptY;
        }
    };

    var 
getXInc = function() {
        return 
Math.round(xMax data.dataPoints.length) - 1;
    };

    var 
drawLine = function(startXstartYendXendYstrokeStylelineWidth) {
        if (
strokeStyle != nullctx.strokeStyle strokeStyle;
        if (
lineWidth != nullctx.lineWidth lineWidth;
        
ctx.beginPath();
        
ctx.moveTo(startXstartY);
        
ctx.lineTo(endXendY);
        
ctx.stroke();
        
ctx.closePath();
    };

    return {
        
renderTyperenderType,
        
renderrender
    
};
} (); 

Evettt şimdi de sonucumuzu görelim..


Sanırım etkilenmemek mümkün değil..
Ceybi isimli Üye şuanda  online konumundadır   Alıntı ile Cevapla

Sponsor Linkler (Lütfen Sitemize Destek Olmak İçin Günde Bir Kez Tıklayınız)
Cevapla

Paylaş

Etiketler
canvas, chart, chart uygulaması, html5, html5 canvas, uygulamasi

Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Açan Forum Cevap Son Mesaj
HTML5 nedir ?ve HTML5 etiketleri Ceybi HTML-XHTML 0 15 Ocak 2012 14:06


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 02:24.


"İnsanları da Kağıt Paralar Gibi Güneş'e Tutunuz, İçlerinde Atatürk Yoksa Sahtedirler ..."
Sitemiz bir forum sitesi olduğu için kullanıcılar paylaşımlarını önceden onay almadan anında siteye yazabilmektedir. Bu yazılardan dolayı doğabilecek her türlü sorumluluk yazan kullanıcılara aittir. Yinede sitemizde yasalara aykırı unsurlar bulursanız admin[at]sanalgucluler[dot]com iletisim adresine bildirebilirsiniz, şikayetiniz incelenip en kısa sürede gereken yapılır.
Alemin Kralı, Alexa, Altavista, Android, Android, Apple ios, Apple Iphone, ASP-.NET, Astroloji, Bada, Blackberry, Blackberry Os, C#, C/C++, Çin Malı Telefonlar, Counter Strike, CSS, Delphi, DMOZ, Eklentiler (Hack-Plugins), Ekonomi, Fatmagül’ün Suçu Ne?, Firar, Google Adsense, Google Adwords, Google Analytics, Google Pagerank, Google Translate, Güvenlik Programları, Hayat Devam Ediyor, HTC, HTML-XHTML, Java, JavaScript & AJAX, Kamera Şakaları, Karahan Online, Kaza Videoları, Knight OnLine, Komik Videolar, Kurtlar Vadisi Pusu, Kuzey Güney, Kültür Sanat, Linux, MAC-OS, Maemo, Magazin, Metin2, Mobil, Moderatör Başvuruları, Motorola, Muck, Muhteşem Yüzyıl, Nokia, Ogame, Palm Os, Pardus, PHP, Pis Yedili, Planet, Python, Sağlık, Samsung, Ses&Video Programları, Siemens, Silkroad Online, Sinema, Sonyericsson, Sorularınız ve Cevapları, Spor, Symbian, Sürücü&Driver, Tasarım Programları, Teknoloji, Travian, Tv Rehberi, Unix, vBulletin Temaları, Visual Basic, Windows, Windows Mobile, WolfTeam, World of Warcraft, WPF/WCF, XML/XSLT, Yahoo, Yalan Dünya, Yer Gök Aşk, İlginç Videolar, İnternet Programları, İstanbul Kıyamet Vakti, Öyle Bir Geçer Zamanki
I Love You Google

Search Engine Optimization by vBSEO 3.6.0