CSHARPWINDOWSFORM Telegram 183
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CircularButtons
{

class CButton : Button
{
// انشاء اعضاء اداة التحكم وتهيئتها بقيم ابتدائيه

private Color borderColor = Color.Red; // لون الحدود
private Color onHoverBorderColor = Color.Red;// لون الحدود عندما يكون الماوس فوق الزر
private Color buttonColor = Color.Red;// لون الزر
private Color onHoverButtonColor = Color.Red;// لون الزر عندما يكون المؤشر بينه
private Color textColor = Color.White; // لون النص الذي يعرض على الزر
private Color onHoverTextColor = Color.White;// لون النص عندما يكون المؤشر بداخل الزر

private bool isHovering; /*
متغير منطقي يقوم بفحص حالة الماوس
MouseLeave و MouseEnter من خلال الاحداث

كما في الاكواد التاليه بداخل دالة البناء
*/
private int borderThickness = 0; // سمك الحدود
private int borderThicknessByTwo = 0;


public CButton() // دالة البناء
{

// DoubleBuffered = true;





MouseEnter += (sender, e) =>
{
isHovering = true;
/*
// لاحظ هذه الطريقة المختصرة التي من خلاله قمنا بمعالجة حدث دخول الماوس
بدون ما نعمل دالة حدث وبدون اي جهد

ملاحظة هذه الطريقة في معالجة الاحداث تتم داخل دوال البناء


عندما يكون المؤشر داخل مساحة الزر True تكون قيمة المتغير المنطقي تساوي
*/


};
MouseLeave += (sender, e) =>
{
isHovering = false;
// نفس العملية الاولة بس للحدث مغادرة الماوس
};

// المظهر
FlatStyle = FlatStyle.Flat;
FlatAppearance.BorderSize = 0;

// ButtonBase الخصائص التي في الاعلى مشتقات من الكلاس الاساسي
//

// تهيئة قيمة الخط الافتراضية للزر
Font = new Font("Tahoma", 12, FontStyle.Bold);


Size = new Size(138, 54);

/*
ستكون قيم هذا الزر الخط والمظهر و الحجم
قيم افتراضية عندما تكون تسحب الزر للفورم بتكون هذه قيمه الافتراضية
بالاضافة الى المتغيرات التي في الاعلى


*/
}


// الان وصلنا الى الدالة التي ستغير من شكل الزر
// وهي دالة ناسخة او تسمى تجاوز
// تنسخ الدالة الوهمية الاساسية الموجود في كلاس كونترول
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);

/*
عند تجاوز الدالة في فئة مشتقة
OnPaint (PaintEventArgs) تأكد من استدعاء الدالة
للفئة الأساسية بحيث يتلقى المندوبين المسجلون الحدث
base.OnPaint(e); مثل هذا السطر

*/




Graphics g = e.Graphics;

#region شرح للسطر الذي في الاعلى
/*
تم إنشاء اوبجكت من كلاس الرسم
جعلنا هذا الاوبجكت يساوي خاصية الرسم لوبجكت الحدث
سوف يحدث على كائن هذا الحدث g بمعنى ان اي تغيير في الاوبجكت




*/

#endregion



//
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
#region شرح السطر السابق
/*
SmoothingMode تقوم الخاصية
بتعيين جودة العرض للرسومات

g لاحظ ان السطر السابق تستطيع ان تكتبه بدون الاوبجكت

e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
*/


#endregion





////

Brush brush = new SolidBrush(isHovering ? onHoverBorderColor : borderColor);

#region شرح السطر السابق
/*
Brush الكلاس
كلاس الفرشاة
يحدد الكائنات المستخدمة لملء التصميمات الداخلية للاشكال الرسومية



tgoop.com/CsharpWindowsForm/183
Create:
Last Update:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CircularButtons
{

class CButton : Button
{
// انشاء اعضاء اداة التحكم وتهيئتها بقيم ابتدائيه

private Color borderColor = Color.Red; // لون الحدود
private Color onHoverBorderColor = Color.Red;// لون الحدود عندما يكون الماوس فوق الزر
private Color buttonColor = Color.Red;// لون الزر
private Color onHoverButtonColor = Color.Red;// لون الزر عندما يكون المؤشر بينه
private Color textColor = Color.White; // لون النص الذي يعرض على الزر
private Color onHoverTextColor = Color.White;// لون النص عندما يكون المؤشر بداخل الزر

private bool isHovering; /*
متغير منطقي يقوم بفحص حالة الماوس
MouseLeave و MouseEnter من خلال الاحداث

كما في الاكواد التاليه بداخل دالة البناء
*/
private int borderThickness = 0; // سمك الحدود
private int borderThicknessByTwo = 0;


public CButton() // دالة البناء
{

// DoubleBuffered = true;





MouseEnter += (sender, e) =>
{
isHovering = true;
/*
// لاحظ هذه الطريقة المختصرة التي من خلاله قمنا بمعالجة حدث دخول الماوس
بدون ما نعمل دالة حدث وبدون اي جهد

ملاحظة هذه الطريقة في معالجة الاحداث تتم داخل دوال البناء


عندما يكون المؤشر داخل مساحة الزر True تكون قيمة المتغير المنطقي تساوي
*/


};
MouseLeave += (sender, e) =>
{
isHovering = false;
// نفس العملية الاولة بس للحدث مغادرة الماوس
};

// المظهر
FlatStyle = FlatStyle.Flat;
FlatAppearance.BorderSize = 0;

// ButtonBase الخصائص التي في الاعلى مشتقات من الكلاس الاساسي
//

// تهيئة قيمة الخط الافتراضية للزر
Font = new Font("Tahoma", 12, FontStyle.Bold);


Size = new Size(138, 54);

/*
ستكون قيم هذا الزر الخط والمظهر و الحجم
قيم افتراضية عندما تكون تسحب الزر للفورم بتكون هذه قيمه الافتراضية
بالاضافة الى المتغيرات التي في الاعلى


*/
}


// الان وصلنا الى الدالة التي ستغير من شكل الزر
// وهي دالة ناسخة او تسمى تجاوز
// تنسخ الدالة الوهمية الاساسية الموجود في كلاس كونترول
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);

/*
عند تجاوز الدالة في فئة مشتقة
OnPaint (PaintEventArgs) تأكد من استدعاء الدالة
للفئة الأساسية بحيث يتلقى المندوبين المسجلون الحدث
base.OnPaint(e); مثل هذا السطر

*/




Graphics g = e.Graphics;

#region شرح للسطر الذي في الاعلى
/*
تم إنشاء اوبجكت من كلاس الرسم
جعلنا هذا الاوبجكت يساوي خاصية الرسم لوبجكت الحدث
سوف يحدث على كائن هذا الحدث g بمعنى ان اي تغيير في الاوبجكت




*/

#endregion



//
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
#region شرح السطر السابق
/*
SmoothingMode تقوم الخاصية
بتعيين جودة العرض للرسومات

g لاحظ ان السطر السابق تستطيع ان تكتبه بدون الاوبجكت

e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
*/


#endregion





////

Brush brush = new SolidBrush(isHovering ? onHoverBorderColor : borderColor);

#region شرح السطر السابق
/*
Brush الكلاس
كلاس الفرشاة
يحدد الكائنات المستخدمة لملء التصميمات الداخلية للاشكال الرسومية

BY برمجة تطبيقات الويندوز C# Programming


Share with your friend now:
tgoop.com/CsharpWindowsForm/183

View MORE
Open in Telegram


Telegram News

Date: |

‘Ban’ on Telegram Telegram Android app: Open the chats list, click the menu icon and select “New Channel.” Don’t publish new content at nighttime. Since not all users disable notifications for the night, you risk inadvertently disturbing them. Telegram channels enable users to broadcast messages to multiple users simultaneously. Like on social media, users need to subscribe to your channel to get access to your content published by one or more administrators. "Doxxing content is forbidden on Telegram and our moderators routinely remove such content from around the world," said a spokesman for the messaging app, Remi Vaughn.
from us


Telegram برمجة تطبيقات الويندوز C# Programming
FROM American