C# “FormBorderStyle None” olan Formu Taşıma ve Ellipse Form
C# “FormBorderStyle None” olan Formu Taşıma ve Ellipse Form
Daha fazlası için: gorselprogramlama.com
Merhaba ben Abdurrahman ÖNDER. Bilindiği gibi formBorderStyle eğer none ise form ekranı taşınmaz ve form ekranımız dikdörtgen şeklindedir. Bu programımızda amacımız tam da bu. Herhangi bir Windows Formumuzun FormBorderStyle özelliğinin none olması halinde formu mouse ile istediğimiz yere sürükleyebilmek ve kenarlarını daha oval yapmak.
-Form Ekranını taşımak için-
İlk olarak bir adet windows form applikasyonu açalım ve Form1 ekranımızın FormBorderStyle özelliğini none yapalım. Ardından form ekranımıza bir adet label ekleyelim.
Üç adet değişken tanımlayalım:
private bool dragging = false;//Sürükleme özelliğimiz private Point dragCursorPoint; private Point dragFormPoint;
Form1 elemanımızın olaylar kısmındaki Form1_MouseDown,Form1_MouseMove ve Form1_MouseUp olaylarına çift tıklayalım. Aynı olayları label içinde tanımlayalım. Çünkü label’e üzerine tıklayıp da taşınması gerekmekte.
private bool dragging = false; private Point dragCursorPoint; private Point dragFormPoint; private void Form1_MouseDown(object sender, MouseEventArgs e) //Tıkladığımızda mouse tuşu aşağı doğru hareket edince gerçekleşir. { dragging = true; dragCursorPoint = Cursor.Position; dragFormPoint = this.Location; } private void Form1_MouseMove(object sender, MouseEventArgs e) //Mouse hareket ederse gerçekleşecek ifadeler. Biz basılı iken hareket etmesi için dragging tanımladık. { if (dragging) { Point dif = Point.Subtract(Cursor.Position, new Size(dragCursorPoint)); this.Location = Point.Add(dragFormPoint, new Size(dif)); } } private void Form1_MouseUp(object sender, MouseEventArgs e) //Mouse tuşu yukarı kalktığında gerçekleşecek ifademiz. { dragging = false; }
-Form Kenarlarını Oval Yapmak İçin-
Burada da Gdi32.dll adlı dll’yi formumuza import ediyoruz. Ardından kenar özellikleri için tanımlamamız gereken değişkenler ve metodumuz var. Onları yazalım. Sonrada public Form1() olayı içine metodumuzu ekleyelim.
[DllImport("Gdi32.dll", EntryPoint = "CreateRoundRectRgn")] private static extern IntPtr CreateRoundRectRgn ( int nLeftRect, // sol üst köşenin x koordinatı int nTopRect, // sol üst köşenin y kordinatı int nRightRect, // sağ alt köşenin x kordinatı int nBottomRect, // sağ alt köşenin y kordinatı int nWidthEllipse, // height of ellipse int nHeightEllipse // elipsin genişliği ); public Form1() { InitializeComponent(); Region = System.Drawing.Region.FromHrgn(CreateRoundRectRgn(0, 0, Width, Height, 40, 40)); //40,40 yaparsanız eşit derecede oval olur. Ancak istediğiniz sayıyı da verebilirsiniz. }
-Projenin tam hali-
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Runtime.InteropServices;//Dll İmport etmek için eklenmeli. using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { private bool dragging = false; private Point dragCursorPoint; private Point dragFormPoint; [DllImport("Gdi32.dll", EntryPoint = "CreateRoundRectRgn")] private static extern IntPtr CreateRoundRectRgn ( int nLeftRect, int nTopRect, int nRightRect, int nBottomRect, int nWidthEllipse, int nHeightEllipse ); public Form1() { InitializeComponent(); Region = System.Drawing.Region.FromHrgn(CreateRoundRectRgn(0, 0, Width, Height, 40, 40)); } private void Form1_MouseDown(object sender, MouseEventArgs e) { dragging = true; dragCursorPoint = Cursor.Position; dragFormPoint = this.Location; } private void Form1_MouseMove(object sender, MouseEventArgs e) { if (dragging) { Point dif = Point.Subtract(Cursor.Position, new Size(dragCursorPoint)); this.Location = Point.Add(dragFormPoint, new Size(dif)); } } private void Form1_MouseUp(object sender, MouseEventArgs e) { dragging = false; } } }
Faydalı olabildiysem ne mutlu bana. Her türlü fikir ve ödev için mail(abdurrahman.onder@ogr.sakarya.edu.tr) atabilirsiniz.
Projeyi İndirmek İçin Tıklayınız.
Daha fazlası için: gorselprogramlama.com
Yardımcı olduğunuz için teşekür ederiz…Sizin gibi kod sever gönülü arkadaşların çoğalması gerekiyor. :)))