Visual Studio İle Paint Kodlamak |Proje|

zztri

Yaşayan Forum Efsanesi
9 Tem 2015
10,053
390
Ankara
Şimdi ilk sormamız gereken, "geri al" işlemi olacak mı? Geri alma yeteneği olan bir paint, ne yazık ki bu işlemin olmadığı paint'ten daha zor kodlanacaktır.

İkinci olarak hangi tool'lar olacak?

"Resmi içeri alma" dediğin şeyi anlamadım. Dosyayı açmak mı? Bunun için bir kaç adım var;

Öncelikle "Canvas" diye bir class yaparsın mesela. Control'den türetilmiş bir class olması yeterli. Önemli olan iki şey;

1. Constructor'da mutlaka "DoubleBuffered=true;" diyeceksin. Yoksa pırpır edip durur.
2. Zoom diye bir property olacak, width ve height değerleri sorgulandığında asıl width ve height'ı bu zoom katsayısıyla çarpmalı. Veya her zoom in/zoom out edildiğinde genişlik ve yüksekliği tekrar hesaplar.
3. System.Drawing.Bitmap'ten ibaret bir "buffer" property'si olmalı. Sen aslında kullanıcının yaptığı her değişikliği bu "buffer"a yapacaksın, OnPaint eventinde de sadece bu buffer'ı çiziverecek.
4. Yeni dosya yüklendiğinde;

Kod:
//Yüklenmek istenen dosya yeri 'path' olsun.
buffer.Dispose(); //Eski buffer yüzünden memory leak olmasın diye emin olmak için dispose ediyoruz.
buffer=(System.Drawing.Bitmap)System.Drawing.Bitmap.FromFile(path);
//Bitti.. Bu kadar.. Son olarak genişlik ve yüksekliği de ayarlarsın biter.
Width=buffer.Width*zoom;
Height=buffer.Height*zoom;

GDI+, geotiff, bigtiff gibi çok büyük dosyalar harici bilinen bütün imaj dosyalarını destekler. Yani hiç bir şey yapmana gerek yoktur, "dosyayı oku" dersin, o otomatik olarak bir bitmap okur.
Transparanlık, dpi vs. hep aynı olsun istersen, aynı boyutta ve istediğin bitrate'e vs. sahip bir bitmap oluşturur, System.Drawing.Graphics.FromBitmap ile bu bitmap'in graphics objesini alır, sonra da okuduğun dosyayı bu boş bitmap'e çizersin.

Hangi çizim araçları olacak, geri alma var mı, ne seviyedesin şu anda, neleri yaptın bilmiyoruz. Ama resmi bile okumadığına göre en başlardasın. Ben 1 saat önce ofisten döndüm, bir çok arkadaş da kendi projeleri vs. ile ilgileniyorlardır. Kimsenin projeyi 100% senin için yapmasını bekleme. Ama takıldığın yerleri söylersen yardım ederiz.
 
Ü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.