mehmetduran.com - Paylaşmak Güzeldir...
Asp.net ile Resim Üzerine Çoklu Yazı Yazma (Generic Handler ile de Gösterme)
Bu yazımda C# kullanarak resim, fotoğraf üstüne çoklu metin yazdırmayı göstermeye çalışacağım. Aslında daha önce burada yazdığım yazımdaki metodu geliştirerek resim, fotoğraf üzerine çoklu veriyi düzenli bir biçimde yazdırabiliyoruz. Geçen hafta yaptığım çalışma sonucunda bloğumda da aynı yöntem ile istatiksel verileri resim üzerinde gösteriyorum. Aynı resmi kullanarak hazırladığım örneği ve kodları sizlerle de paylaşmak istiyorum. Bu metodu geliştirerek çok daha kapsamlı çok daha esnek bir resim üzerine yazı yazma editörü hazırlayabiliriz. Bunu da fırsat bulduğumda jQuery ve Ajax kullanarak hazırlamayı düşünüyorum. Şimdi hazırladığım örneğe ve kodlarına bakalım.

Öncelikle yazmış olduğum metodu ve üzerine yazı yazdırdığımız resmi görüntülemek için yazdığımız (generic handler) kodları paylaşmak istiyorum. Bu kodlar şöyle olmalı:

 
public class Resim : IHttpHandler
{
  public bool IsReusable { get { return false; } }
 
  public void ProcessRequest(HttpContext context)
  {
    Image image = Image.FromFile(HttpContext.Current.Server.MapPath("~/istatistik.png"));
    Bitmap sayac = yaz(image, image.Width, image.Height, new List<string>() { "1. Değer", "2. Değer", "3. Değer" }, 8);
    MemoryStream ms = new MemoryStream();
    sayac.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
    byte[] r = ms.GetBuffer();
    image.Dispose();
    context.Response.Clear();
    context.Response.ContentType = "image/png";
    context.Response.BinaryWrite(r);
    context.Response.End();
  }
 
  // Kullanacağımız Metot
  private static Bitmap yaz(Image resim, int genislik, int yukseklik, List<string> yazilacak, float font)
  {
    Bitmap resmim = new Bitmap(resim, genislik, yukseklik);
    Graphics graf = Graphics.FromImage(resmim);
    SolidBrush firca = new SolidBrush(Color.Black);
    Font fnt = new Font("tahoma", font); // kullanılan font ve büyüklüğü.
    SizeF size = new SizeF(0, 15); // yazılacak metin için belirlenecek alanın büyüklüğü.
    PointF coor;
    RectangleF kutu;
    StringFormat sf = new StringFormat();
    sf.Alignment = StringAlignment.Center;
    int i = 7;
    foreach (string deger in yazilacak)
    {
      coor = new PointF(72, i); // yazılacak metinin koordinatları;.
      kutu = new RectangleF(coor, size); // yazılacak metinin konumunu belirtiyoruz.
      graf.DrawString(deger, fnt, firca, kutu, sf); // metnimizi yazdırıyoruz.
      i += 15; // her metnin yukarıdan olan uzaklığını artırmak için bu değeri tutuyoruz.
    }
    return resmim;
  }
}
 

Bu kodlar içindeki verileri veritabanından veya başka bir kaynaktan alarak oluşturursak dinamik bir yapı olmuş olur. Resim üstünde gelişmiş raporlamaları bu şekilde hazırlayabiliriz. Haber sitelerinde veya bloglarda kullanılan online editörler gibi editörler hazırlayabiliriz. Böyle bir editörü fırsat bulduğumda Ajax ve jQuery kullanarak tamamen dinamik biçimde oluşturmayı düşünüyorum. Ayrıca metot üzerinde değişimler yaparak görselliği artırabiliriz.

Hazırladığım örneği buradan indirebilir, çalışır halini buradan görebilirsiniz.

İyi Çalışmalar.
Bookmark and Share
Bu Yazıyı Değerlendirin.
Konuyla İlgili Olabilecek Diğer Yazılar Asp.net ile Veritabanı İşlemlerinde Etkin Kodlama Yöntemi C Sharp'ta Split Metodu Kullanımı FancyBox Kullanımı Sudoku Uygulamam (MDSudoku v1.0) LINQPad
Yorumlar
Yorum Yaz
RSS Yorum Takibi
onur demirel 16 Aralık Çarşamba 2009 12:21 #1
Güzel bir paylaşım teşekkürler.
Erdii 08 Mayıs Cumartesi 2010 22:27 #2
Merhaba Hocam Öncelikle Paylaşımların İçin Teşekkür Ederim Size Bir Sorum Olacak (c# ile asp.net )(vb ile asp.net) arasındaki fark nedir kullanıldıkları yerler kodlamalardaki bazı farklılıklar nelerdir yani biz c# ile asp.net kullanımında admin paneli yapıyoruz vb.net ilede bu yapılırmı ? Arasındaki Farklar Nelerdir (Asp.net ile Vb)Dili İle Neler Yapılır Bu İki Programlama dilinin Birbirlerine Göre Artıları Eksileri nelerdir Hocam Kısaca Cevaplarsan Sevinirim Bloga Ders Olarak Detaylı Olarak
Erdi 08 Mayıs Cumartesi 2010 22:28 #3
Anlatırsan Daha Çok Mutlu Olurum :D
Mehmet Duran 09 Mayıs Pazar 2010 00:11 #4
Merhaba. VB, tıpkı C# gibi Microsoft tarafından geliştirilmiş bir programlama dili. C#'tan daha eski bir geçmişi var. İkisi de Microsoft tarafından geliştirildiği için yapıları çok benzer. Birbirlerinden tek farkı syntax yapısı. Asp.Net projelerinde isteyen hem C# hem de VB kullanabilir. Bunun için web.config'de küçük bir tanımlama yeterli. Şimdilik bunları söyleyebilirim. Detaylı bir yazı yazmam şu sıralar pek mümkün görünmüyor.
Erdi 09 Mayıs Pazar 2010 14:11 #5
Cevabınız İçin Çok Teşekkür Ederim . Umarım En Yakın Zamanda Bu Konu Hakkında da Detaylı Bir İçerik Paylaşıp Beni ve Benim Gibi Arkadaşları Çok Mutlu Edersiniz Başarılarınızın Devamını Dilerim Çok Sağolun
ahmet 22 Kasım Pazartesi 2010 12:26 #6
güzel paylaşım
Osman 25 Kasım Perşembe 2010 02:27 #7
Bunun Online Olanını Yapabılırmızın Bugun Bu Ay Bu Sene diye.
Burak TARHANLI 29 Kasım Pazartesi 2010 18:00 #8
İnternette aradığım bir çok konuda, okumaya ihtiyacım olan makaleleri sizin yazdığınızı görüyor ve sizin sitenizden okuyorum. Bu da her seferinde şahsınızı bir kez daha tebrik etmemi sağlıyor; çünkü, bir şeyi bilmek ve kullanmak başka, bildiklerini diğer insanlarla da paylaşmak çok daha alçak gönüllü ve başka bir şeydir. Tıpkı diğer paylaşımlarınız gibi, bu paylaşımınızı da çok yararlı buluyorum. Teşekkürlerimle... ( Bu arada yeni arabanız da hayırlı olsun.. :) )
Mehmet Duran 10 Aralık Cuma 2010 23:50 #9
@Osman, örneği paylaştım. Orada resmi kendine göre şekillendireceksin. Geriye istediğin alana istediğin veriyi yazdırmak kalıyor.
Mehmet Duran 10 Aralık Cuma 2010 23:58 #10
@Burak, görüşlerin ve dileklerin için teşekkür ederim.
Mahsun 21 Şubat Pazartesi 2011 16:21 #11
Mehmet güzel bir paylaşım. Öğrenmek istediğim <%#Eval("Resim"),("Baslik")%> nasıl yapacağız.yani veritanından gelen verileri nasıl resimin üzerine yazdıracağız.Datalistin içinde bunu nasıl yapacağız ben onu öğrenmek istiyordum.
Mehmet Duran 08 Nisan Cuma 2011 22:18 #12
@Mahsun, söylemiş olduğun gibi Eval ile gelen veriyi kullanmak için bazı fonksiyonlar hazırlayabilirsin. Bu fonksiyonlar ile aldığın değeri resim üzerine yazdırıp, bir handler ile göstermak olacak. Buradaki örnek bunu yapman için yeterli olur diye düşünüyorum.
İsim :
Site :
Yorum :

Buradan bu yazıya ait yorumları RSS olarak takip edebilirsiniz.

Bu servis ile yazılara eklenen yorumları RSS ile takip ederek konu ile ilgili başkaları tarafından yapılan yorumları veya konuyla ilgili sorduğunuz sorulara verilen cevapları görebilirsiniz.
Kimse sana senden iyi öğüt veremez.
Bölümler
Yazılar
Arşiv
Arama
Linkler
Site İçi Arama
Son Zamanlarda Ne Yapıyorum ?
İstatistikler - Araçlar - Reklam
İstatistikler
Sayaç
Mehmet Duran | mehmetduran.com | Copyright © 2009