الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

لجعل النموذج ثلاثي الأبعاد

مغلق
بدأه fantastic في 7 مارس 2006 · 0 رد · 400 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1

أخواني هذا الموضوع عجباني منقول من موقع المنتدى .نقلته لتعم للفائده:

1- لجعل النموذج ثلاثي الأبعاد:

Sub ThreeDForm(frmForm As Form)

Const cPi = 3.1415926

Dim intLineWidth As Integer

intLineWidth = 5

' 'save scale mode

Dim intSaveScaleMode As Integer

intSaveScaleMode = frmForm.ScaleMode

frmForm.ScaleMode = 3

Dim intScaleWidth As Integer

Dim intScaleHeight As Integer

intScaleWidth = frmForm.ScaleWidth

intScaleHeight = frmForm.ScaleHeight

' 'clear form

frmForm.Cls

' 'draw white lines

frmForm.Line (0, intScaleHeight)-(intLineWidth, 0), &HFFFFFF, BF

frmForm.Line (0, intLineWidth)-(intScaleWidth, 0), &HFFFFFF, BF

' 'draw grey lines

frmForm.Line (intScaleWidth, 0)-(intScaleWidth - intLineWidth, intScaleHeight), &H808080, BF

frmForm.Line (intScaleWidth, intScaleHeight - intLineWidth)-(0, intScaleHeight), &H808080, BF

' 'draw triangles(actually circles) at corners

Dim intCircleWidth As Integer

intCircleWidth = Sqr(intLineWidth * intLineWidth + intLineWidth * intLineWidth)

frmForm.FillStyle = 0

frmForm.FillColor = QBColor(15)

frmForm.Circle (intLineWidth, intScaleHeight - intLineWidth), intCircleWidth, QBColor(15), _

-3.1415926, -3.90953745777778 '-180 * cPi / 180, -224 * cPi / 180

frmForm.Circle (intScaleWidth - intLineWidth, intLineWidth), intCircleWidth, QBColor(15), _

-0.78539815, -1.5707963 ' -45 * cPi / 180, -90 * cPi / 180

' 'draw black frame

frmForm.Line (0, intScaleHeight)-(0, 0), 0

frmForm.Line (0, 0)-(intScaleWidth - 1, 0), 0

frmForm.Line (intScaleWidth - 1, 0)-(intScaleWidth - 1, intScaleHeight - 1), 0

frmForm.Line (0, intScaleHeight - 1)-(intScaleWidth - 1, intScaleHeight - 1), 0

frmForm.ScaleMode = intSaveScaleMode

End Sub

Private Sub Form_Paint()

ThreeDForm Me

End Sub

2- خلفية متدرجة للفورم مثل برنامج الاعداد :

Sub Fade(vForm As Form)

Dim intLoop As Integer

vForm.DrawStyle = vbInsideSolid

vForm.DrawMode = vbCopyPen

vForm.ScaleMode = vbPixels

vForm.DrawWidth = 2

vForm.ScaleHeight = 256

For intLoop = 0 To 255

'I???E ?EI??E EC???? C?????

vForm.Line (0, intLoop)-(Screen.Width, intLoop - 1), RGB(0, 0, 255 - intLoop), B

Next intLoop

End Sub

Private Sub Form_Activate()

Fade Me

End Sub

3- خلفية النموذج بألوان قوس قزح :

Option Explicit

Private Sub Form_Load()

Me.AutoRedraw = True

Me.ScaleMode = vbTwips

Me.Caption = "Rainbow Generator by " & _

"K. O. Thaha Hussain"

MsgBox "Resize the window To resize the Rainbow", , _

"Thaha Hussain's Rainbow Generator"

End Sub

Private Sub Form_Resize()

Call Rainbow

End Sub

Private Sub Rainbow()

On Error Resume Next

Dim Position As Integer, Red As Integer, Green As _

Integer, Blue As Integer

Dim ScaleFactor As Double, Length As Integer

ScaleFactor = Me.ScaleWidth / (255 * 6)

Length = Int(ScaleFactor * 255)

Position = 0

Red = 255

Blue = 1

'Purposfully avoided nested loops

'------------- 1

For Green = 1 To Length

Me.Line (Position, 0)-(Position, Me.ScaleHeight), _

RGB(Red, Green \ ScaleFactor, Blue)

Position = Position + 1

Next Green

'--------------- 2

For Red = Length To 1 Step -1

Me.Line (Position, 0)-(Position, Me.ScaleHeight), _

RGB(Red \ ScaleFactor, Green, Blue)

Position = Position + 1

Next Red

'---------------- 3

For Blue = 0 To Length

Me.Line (Position, 0)-(Position, Me.ScaleHeight), _

RGB(Red, Green, Blue \ ScaleFactor)

Position = Position + 1

Next Blue

'----------------- 4

For Green = Length To 1 Step -1

Me.Line (Position, 0)-(Position, Me.ScaleHeight), _

RGB(Red, Green \ ScaleFactor, Blue)

Position = Position + 1

Next Green

'------------------ 5

For Red = 1 To Length

Me.Line (Position, 0)-(Position, Me.ScaleHeight), _

RGB(Red \ ScaleFactor, Green, Blue)

Position = Position + 1

Next Red

'------------------- 6

For Blue = Length To 1 Step -1

Me.Line (Position, 0)-(Position, Me.ScaleHeight), _

RGB(Red, Green, Blue \ ScaleFactor)

Position = Position + 1

Next Blue

End Sub

4- لعمل النوذج رخامي :

'?? ??C C???I ?? ??? C?E????CE General

Private Sub GradientFill()

Dim i As Long

Dim c As Integer

Dim r As Double

r = ScaleHeight / 3.142

For i = 0 To ScaleHeight

c = Abs(220 * Sin(i / r))

Me.Line (0, i)-(ScaleWidth, i), RGB(c, c, c + 30) 'Notice the bias To blue. You can be more subtle by reducing this number (try 10). Try other colours too.

Next

End Sub

'???C C???I ?? ?IE Resize ??????

Private Sub Form_Activate()

GradientFill

End Sub

5 - لعمل النموذج شفاف :

Private Declare Function SetLayeredWindowAttributes Lib "user32.dll" (ByVal hwnd As Long, ByValcrKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Boolean

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Const LWA_ALPHA = 2

Const GWL_EXSTYLE = (-20)

Const WS_EX_LAYERED = &H80000

Private Sub Form_Load()

SetWindowLong hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) Or WS_EX_LAYERED

SetLayeredWindowAttributes hwnd, 0, 128, LWA_ALPHA

End Sub

6 - مؤثر رائع عللى الفورم :

Function Dist(x1, y1, x2, y2) As Single

Dim A As Single, B As Single

A = (x2 - y1) * (x2 - x1)

B = (y2 - y1) * (y2 - y1)

Dist = Sqr(A + B)

End Function

Sub MoveIt(A, B, t)

A = (1 - t) * A + t * B

End Sub

Private Sub Form_Click()

Cls

Dim t As Single, x1 As Single, y1 As Single

Dim x2 As Single, y2 As Single, x3 As Single

Dim y3 As Single, x4 As Single, y4 As Single

Scale (-320, 200)-(320, -200)

t = 0.05

x1 = -320: y1 = 200

x2 = 320: y2 = 200

x3 = 320: y3 = -200

x4 = -320: y4 = -200

Do Until Dist(x1, y1, x2, y2) < 10

Line (x1, y1)-(x2, y2)

Line -(x3, y3)

Line -(x4, y4)

Line -(x1, y1)

MoveIt x1, x2, t

MoveIt y1, y2, t

MoveIt x2, x3, t

MoveIt y2, y3, t

MoveIt x3, x4, t

MoveIt y3, y4, t

MoveIt x4, x1, t

MoveIt y4, y1, t

Loop

End Sub

Private Sub Form_Resize()

Cls

Dim t As Single, x1 As Single, y1 As Single

Dim x2 As Single, y2 As Single, x3 As Single

Dim y3 As Single, x4 As Single, y4 As Single

Scale (-320, 200)-(320, -200)

t = 0.05

x1 = -320: y1 = 200

x2 = 320: y2 = 200

x3 = 320: y3 = -200

x4 = -320: y4 = -200

Do Until Dist(x1, y1, x2, y2) < 10

Line (x1, y1)-(x2, y2)

Line -(x3, y3)

Line -(x4, y4)

Line -(x1, y1)

MoveIt x1, x2, t

MoveIt y1, y2, t

MoveIt x2, x3, t

MoveIt y2, y3, t

MoveIt x3, x4, t

MoveIt y3, y4, t

MoveIt x4, x1, t

MoveIt y4, y1, t

Loop

End Sub

7 - نموذج دائري الأطراف :

Private Declare Function CreateRoundRectRgn Lib "gdi32.dll" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long 'MODULE 1152

Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long

'v is the size of the top corners and w is the size of the bottom corners...

Sub RoundRect(ByVal uObject As Object, ByVal v As Long, ByVal w As Long)

Dim lRight As Long

Dim lBottom As Long

Dim hRgn As Long

With uObject

lRight = .Width / Screen.TwipsPerPixelX

lBottom = .Height / Screen.TwipsPerPixelY

hRgn = CreateRoundRectRgn(0, 0, lRight, lBottom, v, w)

SetWindowRgn .hWnd, hRgn, True

End With

End Sub

Private Sub Form_Load()

RoundRect Me, 40, 40 'Leave it on 40.

End Sub

تم تعديل هذه المشاركة بواسطة fantastic في 7 مارس 2006 في 23:34

هذا الموضوع مغلق.

مواضيع مشابهة