Drag&Drop IMG to PDF Projesi (WinForm)

Kruvazör

Yazılım Ekibi Lideri
28 Mar 2020
1,724
2,542
Wrong Side Of Heaven
Merhaba arkadaşlar
Ben
Coderx37
Bugün sizlerle basit bir proje olarak görselleri drag&drop yöntemiyle PDF formatına çeviren bir uygulama yapacağız.

Projemizi oluşturmak için
Windows Form Application seçelim ve NuGet paketlerinden "PDFsharp" paketini indirelim.

Form ekranı önümüze açılınca bir adet
button ve bir adet label koymanız yeterli.
Örnek düzen:
nwb6cn5.jpg

Kodlarımızı yazmaya başlayalım!


Global Alan: Bir lokal alanın dışındaki kalan kapsayıcı uzay alana global alan denir. Bu alanda sadece değişken tanımı ve ataması yapılabilir. Bu alanda tanımlanan değişkenler lokalin aksine ram’de direk yer tutar. Hata ataması yapılmamış bir değişken dahi olsa bile ram’de yer tutabilmesi için C# değişkene otomatik bir değer ataması yaparak ram’de yer tutturur. Böylelikle kodun herhangi bir yerinde kullanılabilir olurlar.

Global alanda kullanıcıdan gelen görselleri tutması adına bir koleksiyon yapısı tanımlayalım.

C#:
 private List<Image> images = new List<Image>();


Form() içerisine de drag ve drop işleminin açılması adına bu kodu ekleyelim.
C#:
   this.AllowDrop = true;

Şimdi ise buttonumuza çift tıklayıp kodlarımızı yazmaya başlayabiliriz.
C#:
 if (images.Count == 0)  //koleksiyon yapısındaki görsel sayısı 0 ise kullanıcıyı görsel seçmeye zorla
 {
     MessageBox.Show("Lütfen en az bir görsel seçin.", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
     return;
 }

 SaveFileDialog saveFileDialog = new SaveFileDialog();  //dosyaların pdf olarak kaydedileceği yol ve ismi seçmek için dialog ekranı aç
 saveFileDialog.Filter = "PDF Files|*.pdf";

 if (saveFileDialog.ShowDialog() == DialogResult.OK)
 {
     string pdfPath = saveFileDialog.FileName;

     using (PdfDocument document = new PdfDocument())
     {
         foreach (Image image in images)   // koleksiyon yapısından gelen resimler boyunca döngüyü döndür
         {
             PdfPage page = document.AddPage();
             XGraphics gfx = XGraphics.FromPdfPage(page);

             // görselleri bir a4 sayfası boyutunu geçmeyecek şekilde ayarla
             double scaleFactor = Math.Min(page.Width.Point / image.Width, page.Height.Point / image.Height);
             double scaledWidth = image.Width * scaleFactor;
             double scaledHeight = image.Height * scaleFactor;
             double x = (page.Width.Point - scaledWidth) / 2;
             double y = (page.Height.Point - scaledHeight) / 2;

             using (MemoryStream ms = new MemoryStream())
             {
                 image.Save(ms, image.RawFormat);
                 XImage xImage = XImage.FromStream(ms);
                 gfx.DrawImage(xImage, x, y, scaledWidth, scaledHeight);
             }
         }

         document.Save(pdfPath);
     }

     MessageBox.Show("PDF oluşturuldu!");
 }


Şimdi formumuza drag ve drop eventlerini eklemek için şu işlemleri yapacağız:
formumuza bir kere sağ tıkladıktan sonra açılan özellikler penceresinden işaretlediğim "olaylar" sekmesini seçiniz.
qamkx3p.png


Buradan DragDrop ve DragEnteri seçelim



ge1o560.jpg

Ardından açılan DragEnter kısmına kodlarımızı yazalım
C#:
   // Sürüklenen dosyaların resim dosyaları olup olmadığını kontrol et
   if (e.Data.GetDataPresent(DataFormats.FileDrop) && IsImageFile((string[])e.Data.GetData(DataFormats.FileDrop)))
   {
       e.Effect = DragDropEffects.Copy;
   }
   else
   {
       e.Effect = DragDropEffects.None;
   }


Sonra DragDrop kısmına kodlarımızı yazalım
C#:
 // Sürüklenen dosyaları işle
 string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
 foreach (string file in files)
 {
     if (IsImageFile(file))
     {
         Image image = Image.FromFile(file);
         images.Add(image);

         PictureBox pictureBox = new PictureBox
         {
             Image = image,
             SizeMode = PictureBoxSizeMode.AutoSize
         };


     }
 }
 MessageBox.Show("Görseller başarıyla yüklendi.", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information);


Son olarak dosyaların doğruluğunu ve varlığını kontrol eden kodlarımızı ekleyelim.
C#:
  private bool IsImageFile(string[] filepaths)
  {
      foreach (string filepath in filepaths)
      {
          if (!IsImageFile(filepath))
          {
              return false;
          }
      }
      return true;
  }

  // Verilen dosya yolunun bir resim dosyası olup olmadığını kontrol et
  private bool IsImageFile(string filepath)
  {
      string[] allowedExtensions = { ".bmp", ".jpg", ".jpeg", ".png", ".gif" };
      string extension = Path.GetExtension(filepath.ToLower());
      return Array.Exists(allowedExtensions, element => element == extension);
  }


Kodun tamamı:
C#:
using PdfSharp.Drawing;
using PdfSharp.Pdf;
using System.Drawing;

namespace PdfMaker
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.AllowDrop = true;

        }
        private List<Image> images = new List<Image>();

      

        private void button2_Click(object sender, EventArgs e)
        {
            if (images.Count == 0)  //koleksiyon yapısındaki görsel sayısı 0 ise kullanıcıyı görsel seçmeye zorla
            {
                MessageBox.Show("Lütfen en az bir görsel seçin.", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            SaveFileDialog saveFileDialog = new SaveFileDialog();  //dosyaların pdf olarak kaydedileceği yol ve ismi seçmek için dialog ekranı aç
            saveFileDialog.Filter = "PDF Files|*.pdf";

            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
                string pdfPath = saveFileDialog.FileName;

                using (PdfDocument document = new PdfDocument())
                {
                    foreach (Image image in images)   // koleksiyon yapısından gelen resimler boyunca döngüyü döndür
                    {
                        PdfPage page = document.AddPage(); 
                        XGraphics gfx = XGraphics.FromPdfPage(page);

                        // görselleri bir a4 sayfası boyutunu geçmeyecek şekilde ayarla
                        double scaleFactor = Math.Min(page.Width.Point / image.Width, page.Height.Point / image.Height);
                        double scaledWidth = image.Width * scaleFactor;
                        double scaledHeight = image.Height * scaleFactor;
                        double x = (page.Width.Point - scaledWidth) / 2;
                        double y = (page.Height.Point - scaledHeight) / 2;

                        using (MemoryStream ms = new MemoryStream())
                        {
                            image.Save(ms, image.RawFormat);
                            XImage xImage = XImage.FromStream(ms);
                            gfx.DrawImage(xImage, x, y, scaledWidth, scaledHeight);
                        }
                    }

                    document.Save(pdfPath);
                }

                MessageBox.Show("PDF oluşturuldu!");
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void Form1_DragEnter(object sender, DragEventArgs e)   
        {
            // Sürüklenen dosyaların resim dosyaları olup olmadığını kontrol et
            if (e.Data.GetDataPresent(DataFormats.FileDrop) && IsImageFile((string[])e.Data.GetData(DataFormats.FileDrop)))
            {
                e.Effect = DragDropEffects.Copy;
            }
            else
            {
                e.Effect = DragDropEffects.None;
            }
        }

        private void Form1_DragDrop(object sender, DragEventArgs e)
        {
            // Sürüklenen dosyaları işle
            string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
            foreach (string file in files)
            {
                if (IsImageFile(file))
                {
                    Image image = Image.FromFile(file);
                    images.Add(image);

                    PictureBox pictureBox = new PictureBox
                    {
                        Image = image,
                        SizeMode = PictureBoxSizeMode.AutoSize
                    };


                }
            }
            MessageBox.Show("Görseller başarıyla yüklendi.", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }





        // Verilen dosya yolları arasında resim dosyası olup olmadığını kontrol et
        private bool IsImageFile(string[] filepaths)
        {
            foreach (string filepath in filepaths)
            {
                if (!IsImageFile(filepath))
                {
                    return false;
                }
            }
            return true;
        }

        // Verilen dosya yolunun bir resim dosyası olup olmadığını kontrol et
        private bool IsImageFile(string filepath)
        {
            string[] allowedExtensions = { ".bmp", ".jpg", ".jpeg", ".png", ".gif" };
            string extension = Path.GetExtension(filepath.ToLower());
            return Array.Exists(allowedExtensions, element => element == extension);
        }
Okuduğunuz için teşekkürler.
Görsellerinizi form ekranına sürükleyip buttona basarak kullanabilirsiniz.
 

invisible blood

Uzman üye
15 Eyl 2023
1,177
442
Merhaba arkadaşlar
Ben
Coderx37
Bugün sizlerle basit bir proje olarak görselleri drag&drop yöntemiyle PDF formatına çeviren bir uygulama yapacağız.

Projemizi oluşturmak için
Windows Form Application seçelim ve NuGet paketlerinden "PDFsharp" paketini indirelim.

Form ekranı önümüze açılınca bir adet
button ve bir adet label koymanız yeterli.
Örnek düzen:
nwb6cn5.jpg

Kodlarımızı yazmaya başlayalım!


Global Alan: Bir lokal alanın dışındaki kalan kapsayıcı uzay alana global alan denir. Bu alanda sadece değişken tanımı ve ataması yapılabilir. Bu alanda tanımlanan değişkenler lokalin aksine ram’de direk yer tutar. Hata ataması yapılmamış bir değişken dahi olsa bile ram’de yer tutabilmesi için C# değişkene otomatik bir değer ataması yaparak ram’de yer tutturur. Böylelikle kodun herhangi bir yerinde kullanılabilir olurlar.

Global alanda kullanıcıdan gelen görselleri tutması adına bir koleksiyon yapısı tanımlayalım.

C#:
 private List<Image> images = new List<Image>();


Form() içerisine de drag ve drop işleminin açılması adına bu kodu ekleyelim.
C#:
   this.AllowDrop = true;

Şimdi ise buttonumuza çift tıklayıp kodlarımızı yazmaya başlayabiliriz.
C#:
 if (images.Count == 0)  //koleksiyon yapısındaki görsel sayısı 0 ise kullanıcıyı görsel seçmeye zorla
 {
     MessageBox.Show("Lütfen en az bir görsel seçin.", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
     return;
 }

 SaveFileDialog saveFileDialog = new SaveFileDialog();  //dosyaların pdf olarak kaydedileceği yol ve ismi seçmek için dialog ekranı aç
 saveFileDialog.Filter = "PDF Files|*.pdf";

 if (saveFileDialog.ShowDialog() == DialogResult.OK)
 {
     string pdfPath = saveFileDialog.FileName;

     using (PdfDocument document = new PdfDocument())
     {
         foreach (Image image in images)   // koleksiyon yapısından gelen resimler boyunca döngüyü döndür
         {
             PdfPage page = document.AddPage();
             XGraphics gfx = XGraphics.FromPdfPage(page);

             // görselleri bir a4 sayfası boyutunu geçmeyecek şekilde ayarla
             double scaleFactor = Math.Min(page.Width.Point / image.Width, page.Height.Point / image.Height);
             double scaledWidth = image.Width * scaleFactor;
             double scaledHeight = image.Height * scaleFactor;
             double x = (page.Width.Point - scaledWidth) / 2;
             double y = (page.Height.Point - scaledHeight) / 2;

             using (MemoryStream ms = new MemoryStream())
             {
                 image.Save(ms, image.RawFormat);
                 XImage xImage = XImage.FromStream(ms);
                 gfx.DrawImage(xImage, x, y, scaledWidth, scaledHeight);
             }
         }

         document.Save(pdfPath);
     }

     MessageBox.Show("PDF oluşturuldu!");
 }


Şimdi formumuza drag ve drop eventlerini eklemek için şu işlemleri yapacağız:
formumuza bir kere sağ tıkladıktan sonra açılan özellikler penceresinden işaretlediğim "olaylar" sekmesini seçiniz.
qamkx3p.png


Buradan DragDrop ve DragEnteri seçelim



ge1o560.jpg

Ardından açılan DragEnter kısmına kodlarımızı yazalım
C#:
   // Sürüklenen dosyaların resim dosyaları olup olmadığını kontrol et
   if (e.Data.GetDataPresent(DataFormats.FileDrop) && IsImageFile((string[])e.Data.GetData(DataFormats.FileDrop)))
   {
       e.Effect = DragDropEffects.Copy;
   }
   else
   {
       e.Effect = DragDropEffects.None;
   }


Sonra DragDrop kısmına kodlarımızı yazalım
C#:
 // Sürüklenen dosyaları işle
 string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
 foreach (string file in files)
 {
     if (IsImageFile(file))
     {
         Image image = Image.FromFile(file);
         images.Add(image);

         PictureBox pictureBox = new PictureBox
         {
             Image = image,
             SizeMode = PictureBoxSizeMode.AutoSize
         };


     }
 }
 MessageBox.Show("Görseller başarıyla yüklendi.", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information);


Son olarak dosyaların doğruluğunu ve varlığını kontrol eden kodlarımızı ekleyelim.
C#:
  private bool IsImageFile(string[] filepaths)
  {
      foreach (string filepath in filepaths)
      {
          if (!IsImageFile(filepath))
          {
              return false;
          }
      }
      return true;
  }

  // Verilen dosya yolunun bir resim dosyası olup olmadığını kontrol et
  private bool IsImageFile(string filepath)
  {
      string[] allowedExtensions = { ".bmp", ".jpg", ".jpeg", ".png", ".gif" };
      string extension = Path.GetExtension(filepath.ToLower());
      return Array.Exists(allowedExtensions, element => element == extension);
  }


Kodun tamamı:
C#:
using PdfSharp.Drawing;
using PdfSharp.Pdf;
using System.Drawing;

namespace PdfMaker
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.AllowDrop = true;

        }
        private List<Image> images = new List<Image>();

     

        private void button2_Click(object sender, EventArgs e)
        {
            if (images.Count == 0)  //koleksiyon yapısındaki görsel sayısı 0 ise kullanıcıyı görsel seçmeye zorla
            {
                MessageBox.Show("Lütfen en az bir görsel seçin.", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            SaveFileDialog saveFileDialog = new SaveFileDialog();  //dosyaların pdf olarak kaydedileceği yol ve ismi seçmek için dialog ekranı aç
            saveFileDialog.Filter = "PDF Files|*.pdf";

            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
                string pdfPath = saveFileDialog.FileName;

                using (PdfDocument document = new PdfDocument())
                {
                    foreach (Image image in images)   // koleksiyon yapısından gelen resimler boyunca döngüyü döndür
                    {
                        PdfPage page = document.AddPage();
                        XGraphics gfx = XGraphics.FromPdfPage(page);

                        // görselleri bir a4 sayfası boyutunu geçmeyecek şekilde ayarla
                        double scaleFactor = Math.Min(page.Width.Point / image.Width, page.Height.Point / image.Height);
                        double scaledWidth = image.Width * scaleFactor;
                        double scaledHeight = image.Height * scaleFactor;
                        double x = (page.Width.Point - scaledWidth) / 2;
                        double y = (page.Height.Point - scaledHeight) / 2;

                        using (MemoryStream ms = new MemoryStream())
                        {
                            image.Save(ms, image.RawFormat);
                            XImage xImage = XImage.FromStream(ms);
                            gfx.DrawImage(xImage, x, y, scaledWidth, scaledHeight);
                        }
                    }

                    document.Save(pdfPath);
                }

                MessageBox.Show("PDF oluşturuldu!");
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void Form1_DragEnter(object sender, DragEventArgs e)  
        {
            // Sürüklenen dosyaların resim dosyaları olup olmadığını kontrol et
            if (e.Data.GetDataPresent(DataFormats.FileDrop) && IsImageFile((string[])e.Data.GetData(DataFormats.FileDrop)))
            {
                e.Effect = DragDropEffects.Copy;
            }
            else
            {
                e.Effect = DragDropEffects.None;
            }
        }

        private void Form1_DragDrop(object sender, DragEventArgs e)
        {
            // Sürüklenen dosyaları işle
            string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
            foreach (string file in files)
            {
                if (IsImageFile(file))
                {
                    Image image = Image.FromFile(file);
                    images.Add(image);

                    PictureBox pictureBox = new PictureBox
                    {
                        Image = image,
                        SizeMode = PictureBoxSizeMode.AutoSize
                    };


                }
            }
            MessageBox.Show("Görseller başarıyla yüklendi.", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }





        // Verilen dosya yolları arasında resim dosyası olup olmadığını kontrol et
        private bool IsImageFile(string[] filepaths)
        {
            foreach (string filepath in filepaths)
            {
                if (!IsImageFile(filepath))
                {
                    return false;
                }
            }
            return true;
        }

        // Verilen dosya yolunun bir resim dosyası olup olmadığını kontrol et
        private bool IsImageFile(string filepath)
        {
            string[] allowedExtensions = { ".bmp", ".jpg", ".jpeg", ".png", ".gif" };
            string extension = Path.GetExtension(filepath.ToLower());
            return Array.Exists(allowedExtensions, element => element == extension);
        }
Okuduğunuz için teşekkürler.
Görsellerinizi form ekranına sürükleyip buttona basarak kullanabilirsiniz.
Ellerinize sağlık hocam.
 

teux

Katılımcı Üye
23 Ocak 2023
959
1,329
Merhaba arkadaşlar
Ben
Coderx37
Bugün sizlerle basit bir proje olarak görselleri drag&drop yöntemiyle PDF formatına çeviren bir uygulama yapacağız.

Projemizi oluşturmak için
Windows Form Application seçelim ve NuGet paketlerinden "PDFsharp" paketini indirelim.

Form ekranı önümüze açılınca bir adet
button ve bir adet label koymanız yeterli.
Örnek düzen:
nwb6cn5.jpg

Kodlarımızı yazmaya başlayalım!


Global Alan: Bir lokal alanın dışındaki kalan kapsayıcı uzay alana global alan denir. Bu alanda sadece değişken tanımı ve ataması yapılabilir. Bu alanda tanımlanan değişkenler lokalin aksine ram’de direk yer tutar. Hata ataması yapılmamış bir değişken dahi olsa bile ram’de yer tutabilmesi için C# değişkene otomatik bir değer ataması yaparak ram’de yer tutturur. Böylelikle kodun herhangi bir yerinde kullanılabilir olurlar.

Global alanda kullanıcıdan gelen görselleri tutması adına bir koleksiyon yapısı tanımlayalım.

C#:
 private List<Image> images = new List<Image>();


Form() içerisine de drag ve drop işleminin açılması adına bu kodu ekleyelim.
C#:
   this.AllowDrop = true;

Şimdi ise buttonumuza çift tıklayıp kodlarımızı yazmaya başlayabiliriz.
C#:
 if (images.Count == 0)  //koleksiyon yapısındaki görsel sayısı 0 ise kullanıcıyı görsel seçmeye zorla
 {
     MessageBox.Show("Lütfen en az bir görsel seçin.", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
     return;
 }

 SaveFileDialog saveFileDialog = new SaveFileDialog();  //dosyaların pdf olarak kaydedileceği yol ve ismi seçmek için dialog ekranı aç
 saveFileDialog.Filter = "PDF Files|*.pdf";

 if (saveFileDialog.ShowDialog() == DialogResult.OK)
 {
     string pdfPath = saveFileDialog.FileName;

     using (PdfDocument document = new PdfDocument())
     {
         foreach (Image image in images)   // koleksiyon yapısından gelen resimler boyunca döngüyü döndür
         {
             PdfPage page = document.AddPage();
             XGraphics gfx = XGraphics.FromPdfPage(page);

             // görselleri bir a4 sayfası boyutunu geçmeyecek şekilde ayarla
             double scaleFactor = Math.Min(page.Width.Point / image.Width, page.Height.Point / image.Height);
             double scaledWidth = image.Width * scaleFactor;
             double scaledHeight = image.Height * scaleFactor;
             double x = (page.Width.Point - scaledWidth) / 2;
             double y = (page.Height.Point - scaledHeight) / 2;

             using (MemoryStream ms = new MemoryStream())
             {
                 image.Save(ms, image.RawFormat);
                 XImage xImage = XImage.FromStream(ms);
                 gfx.DrawImage(xImage, x, y, scaledWidth, scaledHeight);
             }
         }

         document.Save(pdfPath);
     }

     MessageBox.Show("PDF oluşturuldu!");
 }


Şimdi formumuza drag ve drop eventlerini eklemek için şu işlemleri yapacağız:
formumuza bir kere sağ tıkladıktan sonra açılan özellikler penceresinden işaretlediğim "olaylar" sekmesini seçiniz.
qamkx3p.png


Buradan DragDrop ve DragEnteri seçelim



ge1o560.jpg

Ardından açılan DragEnter kısmına kodlarımızı yazalım
C#:
   // Sürüklenen dosyaların resim dosyaları olup olmadığını kontrol et
   if (e.Data.GetDataPresent(DataFormats.FileDrop) && IsImageFile((string[])e.Data.GetData(DataFormats.FileDrop)))
   {
       e.Effect = DragDropEffects.Copy;
   }
   else
   {
       e.Effect = DragDropEffects.None;
   }


Sonra DragDrop kısmına kodlarımızı yazalım
C#:
 // Sürüklenen dosyaları işle
 string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
 foreach (string file in files)
 {
     if (IsImageFile(file))
     {
         Image image = Image.FromFile(file);
         images.Add(image);

         PictureBox pictureBox = new PictureBox
         {
             Image = image,
             SizeMode = PictureBoxSizeMode.AutoSize
         };


     }
 }
 MessageBox.Show("Görseller başarıyla yüklendi.", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information);


Son olarak dosyaların doğruluğunu ve varlığını kontrol eden kodlarımızı ekleyelim.
C#:
  private bool IsImageFile(string[] filepaths)
  {
      foreach (string filepath in filepaths)
      {
          if (!IsImageFile(filepath))
          {
              return false;
          }
      }
      return true;
  }

  // Verilen dosya yolunun bir resim dosyası olup olmadığını kontrol et
  private bool IsImageFile(string filepath)
  {
      string[] allowedExtensions = { ".bmp", ".jpg", ".jpeg", ".png", ".gif" };
      string extension = Path.GetExtension(filepath.ToLower());
      return Array.Exists(allowedExtensions, element => element == extension);
  }


Kodun tamamı:
C#:
using PdfSharp.Drawing;
using PdfSharp.Pdf;
using System.Drawing;

namespace PdfMaker
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.AllowDrop = true;

        }
        private List<Image> images = new List<Image>();

     

        private void button2_Click(object sender, EventArgs e)
        {
            if (images.Count == 0)  //koleksiyon yapısındaki görsel sayısı 0 ise kullanıcıyı görsel seçmeye zorla
            {
                MessageBox.Show("Lütfen en az bir görsel seçin.", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            SaveFileDialog saveFileDialog = new SaveFileDialog();  //dosyaların pdf olarak kaydedileceği yol ve ismi seçmek için dialog ekranı aç
            saveFileDialog.Filter = "PDF Files|*.pdf";

            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
                string pdfPath = saveFileDialog.FileName;

                using (PdfDocument document = new PdfDocument())
                {
                    foreach (Image image in images)   // koleksiyon yapısından gelen resimler boyunca döngüyü döndür
                    {
                        PdfPage page = document.AddPage();
                        XGraphics gfx = XGraphics.FromPdfPage(page);

                        // görselleri bir a4 sayfası boyutunu geçmeyecek şekilde ayarla
                        double scaleFactor = Math.Min(page.Width.Point / image.Width, page.Height.Point / image.Height);
                        double scaledWidth = image.Width * scaleFactor;
                        double scaledHeight = image.Height * scaleFactor;
                        double x = (page.Width.Point - scaledWidth) / 2;
                        double y = (page.Height.Point - scaledHeight) / 2;

                        using (MemoryStream ms = new MemoryStream())
                        {
                            image.Save(ms, image.RawFormat);
                            XImage xImage = XImage.FromStream(ms);
                            gfx.DrawImage(xImage, x, y, scaledWidth, scaledHeight);
                        }
                    }

                    document.Save(pdfPath);
                }

                MessageBox.Show("PDF oluşturuldu!");
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void Form1_DragEnter(object sender, DragEventArgs e)  
        {
            // Sürüklenen dosyaların resim dosyaları olup olmadığını kontrol et
            if (e.Data.GetDataPresent(DataFormats.FileDrop) && IsImageFile((string[])e.Data.GetData(DataFormats.FileDrop)))
            {
                e.Effect = DragDropEffects.Copy;
            }
            else
            {
                e.Effect = DragDropEffects.None;
            }
        }

        private void Form1_DragDrop(object sender, DragEventArgs e)
        {
            // Sürüklenen dosyaları işle
            string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
            foreach (string file in files)
            {
                if (IsImageFile(file))
                {
                    Image image = Image.FromFile(file);
                    images.Add(image);

                    PictureBox pictureBox = new PictureBox
                    {
                        Image = image,
                        SizeMode = PictureBoxSizeMode.AutoSize
                    };


                }
            }
            MessageBox.Show("Görseller başarıyla yüklendi.", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }





        // Verilen dosya yolları arasında resim dosyası olup olmadığını kontrol et
        private bool IsImageFile(string[] filepaths)
        {
            foreach (string filepath in filepaths)
            {
                if (!IsImageFile(filepath))
                {
                    return false;
                }
            }
            return true;
        }

        // Verilen dosya yolunun bir resim dosyası olup olmadığını kontrol et
        private bool IsImageFile(string filepath)
        {
            string[] allowedExtensions = { ".bmp", ".jpg", ".jpeg", ".png", ".gif" };
            string extension = Path.GetExtension(filepath.ToLower());
            return Array.Exists(allowedExtensions, element => element == extension);
        }
Okuduğunuz için teşekkürler.
Görsellerinizi form ekranına sürükleyip buttona basarak kullanabilirsiniz.
Elinize sağlık coder hocam
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.