| Editor Login | Register | ||
| > Akademik İnternet ® > ASP.NET |
|
|
| ASP.NET ile Dinamik Resim Oluşturmak | ||||
Web uygulamalarında sıklıkla yaptığımız işlemlerden birisi dinamik olarak resim oluşturmaktır. Dinamik olarak oluşturmak ile kastettiğimiz program içerisinde aldığı değişken değerlere göre çıktı üretmesidir. Bu makalemizde hisse senetlerinin görsel ifadesi ile ilgili System.Drawing isim uzayının ASP.NET uygulamalarında nasıl kullanılabileceğiniz inceleyeceğiz. Bu makalede örnek üzerinden konuyu sizlere aktarmaya çalışacağım. Dinamik resim örneği olarak aklıma ilk gelen; borsa verilerinin online olarak bir bar grafiğinde gösterilmesi oldu. ASP.NET web uygulamalarının bize kazandırdığı en büyük avantajlardan birisi dinamik olarak farklı veritabanlarından veya veri kaynaklarından verileri alıp programatik olarak kullanmamıza izin vermesi. Hemen örneğimizin ön sayfasını oluşturarak işe başlayalım: Bar_grafigi.aspx
Bar_grafigi.aspx dosyasının içerisinde tek bir satır var ve bu satırın içerisinde bizim için en önemli kısım ContentType. Bu kısımda "image/gif" sizin de dikkatinizi çekiyor olmalı. ASP.NET Sayfasına contentType belirterek, sayfanın çıktısının bir gif resim dosyası olacağı bilgisini belirtmiş oluyoruz. Böylece arka planda yazacağımız kod kısmı olan bar_grafigi.aspx.vb dosyasında üreteceğimiz bar grafiği bir gif uzantılı dosya olarak dinamik olarak oluşacak. Öncelikle arka plandaki koda (codebehind) gerekli olan isim uzayı (namespace) eklemelerini gerçekleştiriyoruz: Bar_grafigi.aspx.vb
Burada kullanacağımız isim uzayı System.Drawing ve alt isim uzaylarından Drawing2D ve Imaging olacaktır. Böylelikle .NET Framework tarafından bize sağlanan grafik sınıflarını kullanarak kolaylıkla çıktı olarak dinamik resim üretebileceğiz. Şimdi gelelim işin zor görünen ama aslında dikkatli inceleyecek olursanız oldukça basit olan dinamik resim oluşturaca BarGrafigiCiz adlı prosedürü yazmaya:
BarGrafigiCiz prosedürü parametre olarak Visual Basic .NET içerisinde yer alan Arraylist adlı dizi listelerini alıyor. Oluşturacağı grafiğin ismini string olarak alırken ekrana nasıl bir oluşumda resmi göndereceğini de stream parametresi ile alıyor ve FillRectange, Drawstring metotları ile dinamik olarak resmi oluşturuyor. Şimdi sayfa yüklenme esnasında resim dinamik olarak üretileceğinden dolayı resmi oluturacak kodu Page_Load olay prosedürü içerisine yazalım:
Öncelikle iki farklı arraylist tanımlıyoruz. Bunlarda ilki olan Stocks ; hisse senetlerinin adlarını tutacağımız dizi listesinin adı. İçerisine Sun Microsystems, Microsoft, IBM, Oracle ve America Onlineın hisse senedi kodları olan sırasıyla SUNW, MSFT, IBM, ORCL, AOL değerlerini atıyoruz. Ardından bu hisse senetlerinin getirilerini rakamsal olarak belirttiğimiz Profits adlı dizi listesini yaratıyoruz. Sabit değerlerimizi Add metotu ile girebildiğimiz gibi parametrik olarak URL üzerinden de değişken alabilmesi için Request.Querystringi kullanarak Microsoftun getirisini alıyoruz. Son olarak az önce yazmış olduğu BarGrafigiCiz adlı prosedüre elimizdeki parametreleri yolluyoruz. Teknoloji Hisseleri Fiyatları başlıklı bir gif dosyası ASP.NET Sayfasında üretilecek böylelikle. Hemen uygulamamızı localhost/bar_grafigi.aspx diyerek çalıştırıyoruz. Karşımıza gelecek ekran görüntüsü şu şekilde olmalı:
Şekil 1 Şekil 1de gördüğünüz gibi dinamik olarak resmimiz verdiğimiz parametrelerle çalıştı. Fakat Microsoftun hisse senedi fiyatı görünmüyor. Çünkü hatırlarsanız onun değerini URL üzerinden girilecek bir değer ile alacağımızı belirtmiştik. O halde hemen ?MSFT=100 diyelim ve sonucu görelim:
Şekil 2 Evet URL üzerinden MSFT değeri alındı ve Stocks adlı dizi listesi içerisine ekledi. Bu demodan da çıkarabileceğimiz bir ders Microsoft çok değerli bir firma grafikte görülüyor. İşin esprisi bir yana, alacağımız sayfadaki bilgilerin bizim için görselliği ne kadar kolaylaştırdığını görmek mutluluk verici. Bu makalemizde ASP.NET uygulamalarında System.Drawing isim uzayını kullanarak nasıl dinamik resim oluşturabileceğimizi inceledik. ASP.NETin güzel özelliklerini keşfetmeye bundan sonraki makalelerimizde de devam edeceğiz. |
|
| Bağlantılar: bilgininefendisi.net |
| Open Source Document Project | AUP&TOS |