السلام عليكم
طريقة تغيير الخط في الـ Label والـ TextBox معروفة ، ولكن ماذا عن عنوان النموذج نفسه ؟
هل هناك طريقة لتغيير الخط واللون في العنوان ؟
مع الشكر والتقدير للجميع
السلام عليكم
طريقة تغيير الخط في الـ Label والـ TextBox معروفة ، ولكن ماذا عن عنوان النموذج نفسه ؟
هل هناك طريقة لتغيير الخط واللون في العنوان ؟
مع الشكر والتقدير للجميع
يرفع رفع الله قدركم :)
السلام عليكم
الذي أعرفه أن نوع الخط للنوافذ العامة ولون إطار النافذة يتحكم فيها نظام التشغيل الذي هو الويندوز.
ولكن هناك طرق أخرى منها أن تجعل النافذة بدون إطار وتقوم بنفسك برسم شكل النافذة وتجعل لها إطار باللون الذي تريد على أن تكتب كود التحكم في تحريك النافذة وغلقها وتصغيرها لتبدو مقبولة للمستخدم للبرنامج.
أرجو أني قد أفدتك بمعلومتي المتواضعة.
نعم ممكن باستخدام أدوات الرسم GDI
انظر الكود التالي كمثال عن كيفية القيام بعدة تغييرات على نص عنوان النافذة
Public Class Form1
' Declare System functions from USER32.DLL System Library
<Runtime.InteropServices.DllImport("user32.dll")> _
Public Shared Function SendMessage(ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, Optional ByRef lParam As Integer = 0) As Integer
End Function
<Runtime.InteropServices.DllImport("user32.dll")> _
Public Shared Function GetWindowDC(ByVal hWnd As IntPtr) As IntPtr
End Function
<Runtime.InteropServices.DllImport("user32.dll")> _
Public Shared Function ReleaseDC(ByVal hWnd As IntPtr, ByVal hDC As IntPtr) As Int32
End Function
' Declare WM_NCPAINT system message nedded by our code
Const WM_NCPAINT As Integer = &H85
' Overriding WndProc to redraw form's title text
Protected Overrides Sub WndProc(ByRef m As Message)
' Resend the messages to the base class
MyBase.WndProc(m)
' if the message is WM_NCPAINT then draw our own title text
If m.Msg = WM_NCPAINT Then
Dim hdc As IntPtr = GetWindowDC(m.HWnd)
Dim g As Graphics = Graphics.FromHdc(hdc)
Dim rDraw As Rectangle = Me.ClientRectangle
Me.Text = ""
Dim fon As Font = New Font(Me.Font.FontFamily.Name, _titleFontSize, FontStyle.Bold)
g.DrawString(_TitleText, fon, _TitleTextColor, _Xpos, _Ypos)
ReleaseDC(Me.Handle, hdc)
End If
End Sub
' Field and property for changing font size
Private _titleFontSize As Short = 9
Public Property TitleFontSize() As Short
Get
Return _titleFontSize
End Get
Set(ByVal value As Short)
If value > 0 Then
_titleFontSize = value
' send the WM_NCPAINT message to update the titile text
SendMessage(Me.Handle.ToInt32, WM_NCPAINT, 1)
End If
End Set
End Property
' Field and property for changing the Title Text
Private _TitleText As String = "Some Title"
Public Property TitleText() As String
Get
Return _TitleText
End Get
Set(ByVal value As String)
_TitleText = value
SendMessage(Me.Handle.ToInt32, WM_NCPAINT, 1)
End Set
End Property
' Field and Property for changng the title text color
Private _TitleTextColor As Brush = Brushes.AliceBlue
Public Property TitleTextColor() As Brush
Get
Return _TitleTextColor
End Get
Set(ByVal value As Brush)
_TitleTextColor = value
SendMessage(Me.Handle.ToInt32, WM_NCPAINT, 1)
End Set
End Property
' You Can Control The X Position Of text
Private _Xpos As Integer = 25
Public Property TitleText_X_Position() As Integer
Get
Return _Xpos
End Get
Set(ByVal value As Integer)
If value > 0 Then
_Xpos = value
SendMessage(Me.Handle.ToInt32, WM_NCPAINT, 1)
End If
End Set
End Property
' You Can Control The Y Position Of text
Private _Ypos As Integer = 8
Public Property TitleText_Y_Position() As Integer
Get
Return _Ypos
End Get
Set(ByVal value As Integer)
If value > 0 Then
_Ypos = value
SendMessage(Me.Handle.ToInt32, WM_NCPAINT, 1)
End If
End Set
End Property
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Test the new title text properties
Me.TitleText = "I can do it"
Me.TitleFontSize = 11
Me.TitleTextColor = Brushes.Bisque
Me.TitleText_X_Position = 50
Me.TitleText_Y_Position = 5
End Sub
End Classكما يوجد مثال قديم في المنتدى في الموضوع ينطلق من نفس مبدأ فكرتك عمل عنوان للفورم على سطرين
تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 16 فبراير 2008 في 12:39
عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه
نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا
ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا
محمد سامر أبو سلو
معلومات قيمة جداً أشكركم جميعا على هذه الجهود الكبيرة .
الفكرة نجحت و الفضل يعود لله ثم لكم بالرغم من أن الكثير من الأسطر لم أفهمها لأني مبتدأ نوعاً ما ومع ذلك أنا في شوق كبير لفهم ما يجري :)
تحياتي لكم جميعا
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…