2010-05-21 14 views
8

olarak kaydedin. Form'u yeniden boyutlandırdığımda, genişletilen PictureBox bölümünün bir Grafik oluşturamıyorum. Sorun nedir?iki soru var grafik oluşturma ve Bitmap

2) Bitmap için PictureBox oluşturulur Grafiği dönüştürmek ve * .JPG veya * .bmp olarak kaydetmek istiyorum. Bunu nasıl yapabilirim?

cevap

6

Eğer PictureBox görüntüyü değiştirmek does`nt varsa, PictureBox denetime

görüntüyü elde edebilirsiniz, resim kutusunun

Graphics g = pictureBox1.CreateGraphics();   
Bitmap bitMap = Bitmap.FromHbitmap(g.GetHdc()); 
bitMap.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg); 

veya daha iyi dışına bit eşlem almak için handle device kullanabilirsiniz

pictureBox1.Image.Save("path", System.Drawing.Imaging.ImageFormat.Jpeg); 
0

1) Açıklamanız çok belirsiz. Bir istisna var mı? Yanlış sonuçlar gösteriyor mu? Ne oluyor?

2) Görüntüyü PictureBox'tan almanız ve Save method numarasını kullanmanız gerekir.

+0

1) herhangi eception alamadım ... benim için çalışıyor ve sadece Grafhic doesnt creat yanlış sonuç görüntülemek etmez. –

+0

Lütfen bunu daha ayrıntılı olarak anlatmaya çalışın ... neler olduğunu anlamak gerçekten zor. Bunun yaratıldığını nereden biliyorsun? Bu sadece Dock'u Doldur'a ayarlarsanız mı? – mafu

+0

PictureBox'un bir MouseClick olayı olduğunu biliyorsunuz. PictureBox'a tıkladığımda, PictureBox'ta bir dikdörtgen çizmek istiyorum. Bu iş, ancak daha büyük beacaus için yeniden boyutlandırıldığında, PictureBox Dock'u, Form gibi daha büyük bir alana dönüşür. yeniden boyutlandırdıktan sonra daha büyük olan kısımda Grafhic oluşturamıyorum ..... Umarım benim sorunumu anladınız demektir –

0

Resim kutusu formu doldurmak üzere yeniden boyutlandırıldığında, Görüntü özelliği aynı kalır.

Yani görüntüyü yeniden boyutlandırmak için PictureBox.OnSizeChanged Olay işlemek yapmak ve sonra aşağıdaki kodu kullanabilirsiniz gerekenler:

pictureBox1.Image.Save(filename, System.Drawing.Imaging.ImageFormat.Jpeg); 

Umut:

private void pictureBox1_SizeChanged(object sender, EventArgs e) 
{ 
    if ((pictureBox1.Image != null)) 
    { 
     pictureBox1.Image = new Bitmap(pictureBox1.Image, pictureBox1.Size); 
    } 
} 

görüntü kullanımını kaydetmek için bu yardımcı olur!

+0

-1: problem PictureBox'un görüntüsü ile ilgili değildir. Bir kontrolde sabit bir şey çizmeye çalışır (PictureBox, Panle veya hatta Form kendisi). –

1

bu deneyin,

private void SaveControlImage(Control ctr) 
    { 
     try 
     { 
      var imagePath = @"C:\Image.png"; 

      Image bmp = new Bitmap(ctr.Width, ctr.Height); 
      var gg = Graphics.FromImage(bmp); 
      var rect = ctr.RectangleToScreen(ctr.ClientRectangle); 
      gg.CopyFromScreen(rect.Location, Point.Empty, ctr.Size); 

      bmp.Save(imagePath); 
      Process.Start(imagePath); 

     } 
     catch (Exception) 
     { 
      // 
     } 
    } 
+0

Bunu daha önce denedim, maalesef kaydettiğiniz görüntü kontrolün kendisinin büyüklüğü ile sınırlıdır. Bu nedenle, büyük bir görüntüyü bir kontrole sığdırmak için yakınlaştırmayı kullanıyorsanız, görüntüyü dışa aktardığınızda, gerçek boyutuna değil, oluşturulmuş boyuta sahip olur. – Zorgarath

İlgili konular