Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Visual Basic .NET => Konuyu başlatan: EMG81 - 09 Ocak 2011, 23:25:42

Başlık: Program açılışı için asimetrik form ?
Gönderen: EMG81 - 09 Ocak 2011, 23:25:42
Öncelikle herkese selam arkadaşlar.

Bu gün Visual studio 2010 u tıklayınca aklıma geldi. Solidworks, altium vs programların hepsi bu tarz açılıyor. Bundan sonra vb projelerime bende bu tarz açılış formları eklemek istiyorum. Bu konuda bana yardımcı alabilirmisiniz...
Başlık: Ynt: Program açılışı için asimetrik form ?
Gönderen: Tagli - 09 Ocak 2011, 23:36:10
Asimetrik açılış formu ne demek? Bir resimle göstermen mümkün mü?
Başlık: Ynt: Program açılışı için asimetrik form ?
Gönderen: lojikmemo1 - 09 Ocak 2011, 23:53:11

Yeni bir uygulama oluşturun

using System.Drawing.Drawing2D;  // eklemeyi unutmayın


form1(yada ismi ne ise) load olayına aşşağıdaki kodu yazın.


            GraphicsPath s = new GraphicsPath();
            s.AddEllipse(0, 0, this.Width, this.Height);

            Region a = new Region(s);
            this.Region = a;
Başlık: Ynt: Program açılışı için asimetrik form ?
Gönderen: EMG81 - 10 Ocak 2011, 00:23:57
C bilmiyorum Basic ile program yazıyorum...

Asimetrik form kare dikdörtgen değil, Kenarları 1-1.5 cm yuvarlanmış dikdörgen, kare nin bi kenarına sanki bi yarım daire eklenmiş gibi vs şeyler...

genelde resim şekline büründürüyorlar formu.
Başlık: Ynt: Program açılışı için asimetrik form ?
Gönderen: Burak B - 10 Ocak 2011, 00:32:43
"Using Shaped Windows in Visual Basic" diye google da bir arat.

Mesela bu aratma sonuçu çıkan bir link;
http://msdn.microsoft.com/en-us/library/aa289517%28v=vs.71%29.aspx (http://msdn.microsoft.com/en-us/library/aa289517%28v=vs.71%29.aspx)
Başlık: Ynt: Program açılışı için asimetrik form ?
Gönderen: EMG81 - 10 Ocak 2011, 00:40:06
Imports System.Drawing.Drawing2D


        Dim s As New GraphicsPath()
        s.AddEllipse(0, 0, Me.Width, Me.Height)

        Dim a As New Region(s)
        Me.Region = a


Translate ile çevirdim bu kod çıktı ve yaptım... Fakat ben daha çok oval, yanları oval vs gibi geometrik formlar yerine tabiricaize yamuk formlar elde etmek istiyorum. örneğin;
[IMG]http://img84.imageshack.us/img84/7861/adszlu.png[/img] (http://img84.imageshack.us/i/adszlu.png/)
Başlık: Ynt: Program açılışı için asimetrik form ?
Gönderen: RcALTIN - 10 Ocak 2011, 02:45:16
FormBorderStyle = BackGroundImageLayout = None
BackColor = TransparencyKey = Color.White
daha sonra forma arkaplan olarak png formatındaki ( o asitmeriyi oluşturan bölgeler transparan olacağı için png) form kaplamanızı atayın... Yalnız çerçeveler kalktığından artık sürükleme v.b işlemleri yapmak isterseniz ekstradan kodlar yazmanız gerekecek...
Başlık: Ynt: Program açılışı için asimetrik form ?
Gönderen: Burak B - 10 Ocak 2011, 08:32:48
Al seni isteğinin son noktasına götüreyim. :) Per Pixel Alpha Blending. ;)

http://www.codeproject.com/KB/GDI-plus/perpxalpha_sharp.aspx?msg=853306 (http://www.codeproject.com/KB/GDI-plus/perpxalpha_sharp.aspx?msg=853306)

http://www.codeproject.com/KB/dialog/SplashScreen.aspx (http://www.codeproject.com/KB/dialog/SplashScreen.aspx)

Gerisi sana kalmış PNG formatı alfa kanalınıda barındırır. Bu bilgiyi PPA için kullanınca ve PNG deki resmide üzerine koyunca o istediğin işlem oluyor.

Bunun Win API karşılığı UpdateLayeredWindow dur.
Başlık: Ynt: Program açılışı için asimetrik form ?
Gönderen: EMG81 - 10 Ocak 2011, 20:15:39
Evvet tam anlamıyla aradığım buydu. :D teşekkür ederim ama çok karmaşık gözüküyor.. İnş üstesinden gelebilirim. haa bu arada bu gün  çok uğraştım ve beceremedim. Vb6 daki gibi 2010 da Formu yazdıramıyormuyuz ? bu gün textbox label resim yazdırdım ama form u yazdırmayı başaramadım. 2008 e göre bi örnek buldum. oda 2010 a uymadı.  ???
Başlık: Ynt: Program açılışı için asimetrik form ?
Gönderen: EMG81 - 11 Ocak 2011, 00:46:01
Değerli yanıtın için çok teşekkür ederim Recep bey ama şu linkteki domates ve biberler gibi bi görüntü elde edemiyorum... Transparanlığa geçişte renk sorunları oluyor...

http://www.codeproject.com/KB/GDI-plus/perpxalpha_sharp.aspx?msg=853306
Başlık: Ynt: Program açılışı için asimetrik form ?
Gönderen: RcALTIN - 11 Ocak 2011, 00:54:56
Alıntı yapılan: EMG81 - 11 Ocak 2011, 00:46:01
Değerli yanıtın için çok teşekkür ederim Recep bey ama şu linkteki domates ve biberler gibi bi görüntü elde edemiyorum... Transparanlığa geçişte renk sorunları oluyor...

http://www.codeproject.com/KB/GDI-plus/perpxalpha_sharp.aspx?msg=853306

Alpha blending olayından anlamam ama saydam olsun diyorsan Formun Opacity değeriyle oynayabilirsin...
Başlık: Ynt: Program açılışı için asimetrik form ?
Gönderen: EMG81 - 11 Ocak 2011, 01:07:49
Sizin yönteminiz kısmen başarılı fakat şöyle bir sorun var.

[IMG]http://img714.imageshack.us/img714/543/forumoe.png[/img] (http://img714.imageshack.us/i/forumoe.png/)



Bu çizgiyi sizin yazınızı okuduktan sonra hemen paint te çizdim.Png olarak kaydettim ve formun arka planına atadım.
Sonuç: Masaüstü arka planı siyah iken Bizim png resmimizin başlangıç noktalarında beyaz belirgeler var.!
Başlık: Ynt: Program açılışı için asimetrik form ?
Gönderen: RcALTIN - 11 Ocak 2011, 01:16:32
paint'in transparan özelliği yok diyebiliyorum, beyaz zemine çizdiğinizden png olarak kaydetsenizde öyle beyaz lekeler kalması normal gibi. fireworks veya photoshop ile transparan zemin üzerine çizim yapın ve png olarak kaydedin, mesela benim profil resmim o şekilde, indirip deneyebilirsiniz...
Başlık: Ynt: Program açılışı için asimetrik form ?
Gönderen: EMG81 - 11 Ocak 2011, 02:19:44
Forum daki profil resminizi sağtuş --> resmi farklı kaydet ---> png olarak kaydedip denedim. sonuç yine aynı...

Belkide benim sistemimden kaynaklı bir sorundur..

işletim sistemim ;
Win 7 home
masa üstü arka planı;
Benim resmim


yarın photoshop ile denemeler yapıcam.

Sizin böyle bir çalışmanız varsa incelememiz amaçlı resmini koyabilirmisiniz?


haa bu arada Form u Vb6 daki print etme konusunda halen hüsranlardayım ... !
Başlık: Ynt: Program açılışı için asimetrik form ?
Gönderen: ErsinErce - 11 Ocak 2011, 02:33:35
http://www.4shared.com/photo/OwHRzau_/Launchpad_McQuack.html

bu resmi denermisiniz, paint.net te magic tool ile beyaz kenarlarını temizleyerek kaydettim
Başlık: Ynt: Program açılışı için asimetrik form ?
Gönderen: RcALTIN - 11 Ocak 2011, 02:47:34
Sanırım anti-alias ile ilgili sorunlar ortaya çıkıyor, ben denemeden mantıken söylemiştim şimdi denedim ve dediğiniz gibi sorun var... Yapacağınız şekilleri v.s antialias olmadan(hard/sharp) yaparsanız tam olarak düzgün görünüyorlar ancak transparan antialias olunca o kısımlar beyazlaşarak görünüyor, siz en iyisi @ByteMaster'in verdiği örneğin Vb.net ile yapımını araştırın...
Başlık: Ynt: Program açılışı için asimetrik form ?
Gönderen: EMG81 - 11 Ocak 2011, 03:24:19
Bu resim denediklerimin en iyisi fakat halen var. Ya benim sistemimde bir sorun var, yada yanlış bir yoldayız diye düşünmeye başladım... Google dan png uzantılı bikaç resim daha indirip denedim sonuç yine aynı.


şu print olayınada deyinmek istiyorum... Formun tam görüntüsünü yazdırma hakkında bilgisi olan yokmu ?
Başlık: Ynt: Program açılışı için asimetrik form ?
Gönderen: Burak B - 11 Ocak 2011, 16:58:25
Bakınız üstünde durarak iki mevzuda hatırlatma yapıyorum bu hususta.

(http://img84.imageshack.us/img84/7861/adszlu.png)
1- Bu görüntüdeki türde bir pencere için UpdateLayeredWindow ve SetLayeredWindow API' lerine hakim olmanız gerekir. Yüksek seviye diller elinizi sürmeden buna imkan sağlıyor olabilirler. Ancak temelde bu yatar. Burdaki en önemli nokta bakınız yukarıdaki splash veya photoshop görenleriniz için onun splashindeki  transparanlık felan bu api ile elde edilir. Pencere oluşturulurken pencere stili değeri WS_EX_LAYERED sabitini içeriyor olmalıdır. Bir pencerenin bu değerini GetWindowLong ve SetwindowLong apileriyle kontrol ve modifiye edebilirsiniz.

2- Bu "Layered Windows" mevzusu "Custom Shaped Windows" ile karıştırılmasın ki bu mevzu Regional Pencerelerle alakalıdır. Bknz; "Window Regions". Onda da yukarıdaki gibi pencereler elde edebilirsiniz. Ancak tek bir farkla hani o gölgeler ve yarı geçirgen etkiler yokmu onları elde edemezsiniz. En basit şekilde hani siz sürekli eliptik bir pencere oluşturuyorsunuz diyelim. Onu öyle değilde tanımlanmış bir regiona elimizdeki bitmapin özel olarak transparandır diye belirtilmiş bir renk değeri hariç (Mesela Çingene pembesi) her renk değeri için 1x1 boyutlarında yani bir pixellik bir rectangular region eklersek ne olur :) Elimizdeki bitmapin şeklinde bir penceremiz. bunuda penceremize SetWindowRgn API' si ile ilişkilendirdiğimizde. Penceremizin şekli oluşmuş olur geriye yüzeyini region için kullandığımız bitmap ile kaplamak kalır ki bunuda o bitmapi bir brush olarak tanımlayarak pencere oluşturma aşamasında yapabilirsiniz. Ama söylediğim gibi bu yöntemde o gölgeler ve yumuşak geçişler yoktur. Ayrıca sadece regional windows kullandığınızda kenarlarda antialias etki elde edemezsiniz kenarlar hep pütürlü kalır. Yani bitmapin kenarlarına kesinlikle antialias vermemeniz gerekir. Ancak aynı Yönteme Bitmapi yüzeye uygulama aşamasında 1 nci maddede bahsettiğim API' yi eklerseniz ve bunu sürekli update ederseniz o zaman o domates, photoshop veya visual studio splashi etkisini alırsınız.

Not: Layered Pencerelerin bir dezavantajı vardır. Böyle bir pencere üzerine child pencereler koyamazsınız. Buton, edit v.b. gibi. Bu durum win7' de değiştiyse bilemiyorum tabi.

Fazla teknik anlatmış olabilirim. Buyrun birkaç link daha;

Delphi için;
http://ibrahimcoban.com/index.php/layeredwindow/ (http://ibrahimcoban.com/index.php/layeredwindow/)

VB 6.0;
http://www.andreavb.com/tip050008.html (http://www.andreavb.com/tip050008.html)

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=55313&lngWId=1 (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=55313&lngWId=1)

VB.NET;
http://allapi.mentalis.org/apilist/SetLayeredWindowAttributes.shtml (http://allapi.mentalis.org/apilist/SetLayeredWindowAttributes.shtml)

http://www.codeproject.com/KB/vb/xDock.aspx (http://www.codeproject.com/KB/vb/xDock.aspx)

http://www.xtremevbtalk.com/showthread.php?t=299784 (http://www.xtremevbtalk.com/showthread.php?t=299784)

C# için; Bunda tam aradığın şey var
http://blogs.msdn.com/b/mswanson/archive/2005/07/07/436618.aspx (http://blogs.msdn.com/b/mswanson/archive/2005/07/07/436618.aspx)

C++ için;
http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/21b5b069-4d5a-4e13-a74c-db8ef5d31a31/ (http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/21b5b069-4d5a-4e13-a74c-db8ef5d31a31/)

Başlık: Ynt: Program açılışı için asimetrik form ?
Gönderen: EMG81 - 12 Ocak 2011, 13:26:55
Teşekkürler
Başlık: Ynt: Program açılışı için asimetrik form ?
Gönderen: kayaaydin - 08 Mayıs 2012, 19:46:12
Evet bence de Paint yerine Fireworks, Photoshop gibi grafik editörleri kullansanız iyi olur.