2016-03-22 7 views
0

Şu anda bir pdf dosyasında bazı hesaplama ve çıktı grafikleri yapmayı amaçlayan bir C# uygulaması üzerinde çalışıyorum.ZedGraph to PDF, MigraDoc kullanarak

Grafiklerimi grafPane.AddCurve (PointPairList) gibi çizmek için Zedgraph kitaplığını kullanıyorum. Şimdi bu grafikleri MigraDoc paketi ile pdf dosyasına çıkarmaya çalıştım.

Şu anda, Zedgraph'ı bitmap ile eşleştirip daha sonra pdf dosyasına yapıştırdığınız bir komut dosyası var. Bu şekilde bir şey:

private Bitmap getBitMap() 
{ 

    ZedGraphControl graph = new ZedGraphControl(); 

    newGraph = graphPane.Clone(); 

    SizeF s = new SizeF(3.5f, 4.5f); 
    newGraph.Scale(s); 

    newGraph.DrawToBitmap(bit, new Rectangle(0, 0, newGraph.Width, newGraph.Height)); 

    return bit; 

} 

Sorun, bu bana pdf sayfasında biraz pikselli bir görüntü vermesidir. Ve çok yüksek kalitede olması için bu grafiğe ihtiyacım var. Yani kaliteyi geliştirmek için yapabileceğim herhangi bir şey var mı yoksa böyle bir şey için tüm yaklaşımımı değiştirmek zorunda mıyım?

Şimdiden çok teşekkürler. Varsayılan olarak

cevap

0

sen sahip oluşturmak Bitmap75dpi gibi düşük olabilir Mevcut ekran çözünürlüğü, daha yaygın 96dpi; daha modern monitörler 120dpi veya daha fazlasına sahiptir, ancak iyi bir baskı kalitesi 150dpi başlar. Gerçekten görüntüleri, cips için, 300dpi ve

Yani oluşturmak ve daha geniş boyutta bir bitmap doldurmak ve dpi çözünürlük kontrolünü almak gerekir .. Eğer 600dpi veya daha fazla olmasını isteyebilirsiniz yakınlaştırma izin vermek istiyorum.

3.5f x 4.5f boyutunuzun inç olduğunu varsayarsak, 300dpi için 1050 x 1350 piksellerine ihtiyacınız vardır.

Yani oluşturmalısınız böyle Bitmap .. a:

bmp.SetResolution(300, 300); 

aynı boyutta olmalıdır kontrolünüzü doldurmak için::

Bitmap bmp = new Bitmap(1050, 1350); 

..ve çözünürlüğü ayarlamak

newGraph.ClientSize = bmp.Size; 

Şimdi DrawToBitmap oluşturmalı net ve yakınlaştırmak için bir görüntü oluştur ..

Kontrolün ekrana sığmayacak kadar büyük olup olmadığını farketmez; DrawToBitmap hala çalışmaya devam edecek.

etc kaliteli çizgiler çizmek için ilgi .. taşımaktadır yeterli çözünürlüğe addidtion olarak Güncelleme ZedGraph bir uzmanlık biri Antialiasing üzerine, ya bireysel hatları için açabilirsiniz şudur:

curve_x.Line.IsAntiAlias = true; 

ya da diğer elemanlar:

myPane.XAxis.Scale.FontSpec.IsAntiAlias = true; 

veya bütün Grafik:

zedGraphControl1.IsAntiAlias = true; 

Tüm örnekler from this post alınmıştır.

+0

Yay !!! Şimdi düşünüyorum, çok teşekkürler dostum. Başka kimsenin de aynı problemi olduğu halde keşfettiğim başka bir nokta. ZedgraphControl'ten pikselleşmeyi işleyen bir functionItem.Line.isAntiAlias ​​işlevi vardır. –

+0

Evet, ZedGraph diyagramları için antialiasing etkinleştirilebilir. Bakınız [burada] (http://stackoverflow.com/questions/17287666/isantialias-creates-border-around-graph)! Bazı seviyelerde mevcut gibi görünüyor .. - Eğer cevaptan memnun iseniz, lütfen kabul [kabul] düşünün (http://stackoverflow.com/help/accepted-answer) ..! – TaW

+0

Bu yöntemin uygulanmasında başka bir sorun buldum. Baskı çıktı pdf boyutu çok büyük. Çıktıyı 300x300dpi kalitesinin hala geçerli olacağı şekilde ölçeklendirebiliriz yine de var mı? Bu resmi –