Графиктер мен дыбысты бағдарламалау


Негізгі мақсаты: Visual Basic ортасындағы графиктер және дыбысты бағдарламалау үшін Windows API функцияларын пайдалану және олардың тағайфндалуын Студенттерге таныстыру.

Білім мен білікке қойылатын талаптар: Студенттер Windows API функцияларының тағайындалуын білуі, көрсетілген функцияларды бағдарламада қодана білуді; Windows API функциясын пайдаланып бағдарлама құра білу қажет.

Visual Basic қолданбасын құру барысында кейбір әркеттерді Visual Basic чтандарты құралдармен орындау туындайды. Бұл жерде Windows API функциясының көмегі зор (оқулықтағы 2.8 тақырыпты қара).

isual Basic 6.0. графикалық басқару элементтеріне толықтырулар графикалық әдістер жиыны арқылы орындалады:

Тәсіл

Арнаулар

Circle

Шеңбер, эллипс немесе доғаның сурет салады

Cls

Шығару аймағын тазалайды

Line

Сызықтарды сызады

Paint Picture

Кескіндерді салады (жүйелейді)

Point

Нүкенің түсін қайтарады

Print

Мәтін шығарады

Pset

Нүктені орналастырады

Print тәсілі мәтінді шығаруға арналған графикаға жанама түрде қатысты. Бірақ та біз оны қаншалықты ол графиканың «сурет салу» берілген объектіге мәтінді немесе мәтінді сандық графикамен араластырғанда басқа әдісерімен бірге қарастырамыз.

       Графикалық әдістерде түстерді есептеу функциялары RGB және QBColor падаланылады. Алдымен осы функцияларды қарастырайық.

Circle тәсілі келесі түрде қолданфылады: objest.Circle[Step][x,y],radius, [Color,sart,end,aspect], мұндағы:

·   Objest- әдіс қолданылатын объект. Егер объект көрсетілмесе, онда, алғашқы келісім бойынша пішін пайдаланылады;

·   Step- шеңбердің элипстік немес доғаның центрлерін координаттарға байланысты анықтайтын, current x; және current у объектерінің қасиетін қайтаратын кілт болып табылады.

·   x,y – Scalemode объектісі қасиетінде шеңбер, элипс, доғалардың ортасының координаттарын бірлікпен анықтайтын сандар;

·   radius- Scalemode объектісі қасиетіне шеңбер, эллипс, доғаларының ортасының радиусын бірлікпен анықтайтын сандар;

·   Color- сызық түсін беретін Land типінің мәні. Гер параметр көрсетілмесе, Fore Color қасиетінің мәнгі қолданылады. Түс тағайындау үшін RGB () немесе QB Color функцияларын қолдануға болады.

·   sart,end- доғаның немесе элипстің бөлігін салу барысында доғаның бастапқы бөлігі  мен соңғы бөлігін радианмен береді; 2пи- ден бастап 2-пи радианға дейін.

·   Aspect- шеңбердің «эллипстік» коэфициентін тағайындайды. Алғашқы келісім бойынша бұл коэфициенті шеңберге сәйкес. 1.0- ге тең.

   Cls тәсілі көмегімен форманы немесе Picture объектісін бағдарламалық жолмен құрылған мәтіннің және графиктен тазартуға болады. Cls тәсілінің синтаксисі өте қарапайым және мына түрде беріледі: Object.Cls, мұндағы Object- әдіс қолданылатын объект. Егер параметр көрсетілмесе, онда алғашқы келісім бойыфнша пішін қолданылады.

   Бұл әдісті currentx және currenty қасиеттеріне қолданған кезде тандалған объектке 0- ге тағайындалатын ескерген жөн.

·   Line-әдісі сызықта салуға арналаған және оның синтаксисі келесі түрде болып келеді, Object. Line. [Step][x1,y1] [Step]-[x2,y2] Color,[B][F], бұл жердегі:

·   Object- әдіс қолданылатын объект. Егер объект көрсетілмесе, онда алғашқы келісім бойынша пішін қолданылады;

·   Step- currentx және current объектілері қасиеттерімен қайтарылатын сызық басы координатасының арасындағы байланысты анықтайтын кіліт.

·   x1,y1, сызықтар басының коордианталары. Бұл параметрлер болмаған жағдайда  басы currentx және currenty- дің объекті қасиеттерінің мәніне жалғанды.

·   Step- сызық басы координатасының арасындағы байланысты анықтайтын кілт, сызық сонының координаталары сызық басының координааталарына салыстырмалы түрде  беріледі.

·   x1,y1, сызықтар басының координаталары.

·   Color- RGB палитрасында сызықтардың түсін береді. Егер параметр көрсетілмесе, онда Fore Color объектісінің қасиеті пайдаланылады.

·   [B]- тік төртбұрыштың суретін салуды білдіреді, сонымен координатасы қатар сол жақ жоғарғы және оң жақ төменгі бұрыштарының координаталары арқылы анықталады.

·   F- тік төрбұрышты оның сызығының түсімен толтырылады;

Pset әдісі объектінің белгілеген нүктесінің түсін тағайындайды. Бұл Point әдісіне керісінше әдіс. Бұл әдістің синтаксисі келесі түрде болып келеді: Object. Pset. [Step](х,у), [Color], мұндағы;

·   Object- әдіс қолданылатын объект. Егер объект көрсетілмесе, онда алғашқы келісім бойынша пішін қолданылады;

·   Step- currentx және currenty объектілері қасиеттерімен қайтарылатын нүкте координаттарының байланысын анықтайтын кіліт.

·   x,y, объектідегі нүкте координаталары.

·   Color- RGB палитрасында нүктенің түсін береді. Егер параметр көрсетілмесе, онда Forecoior объектісінің қасиеті пайдаланылады.

Pset әдісін қолдану барысында нүкте мөлшері объектісінің қалындығымен анықталатының ескеру қажет, яғни  Draro Width объектісінң қасиеттері арқылы. 1 қалындығы үшін- бұл бір пиксель, бірден артық қалындықтарға- бұл объектінің көрсетілген координаттардан тұратын центрінің аймағы. Осыдан барып нүктені салу әдісі DrawMode және  DrawStyle объектілерінің қасиеттерімен анықталады.

1-                       мысал. Пішінде салынған келесі суреттің бағдараламасын құрындар.

Dim XP, YP

Private Declare Function Flood Fill Lib”gdi32”

 (By Val hdc As Long, By Val X as Long,

By Val crColor As Long) As Long

Private Sub Frm_Activate ()

шеңбер салып оны бояумен толтырыныз

YP=200

Fill Style=0

Fill Color=QBColor (12)

Circle (XP, YP), 50, QBColor

Flood Fill hds, XP, YP, QBColor(0)

‘тік төртбұрыш салып оны бояумен толтырыныз’

XP=120

YP=200

Fill Stile=0

Fill Color=QBColor(10)

Line (XP, YP)-(XP+100, YP+50), QBColor (9), B

Flood Fill hds, XP, YP, QBColor (9)

‘үшбұрыш салып оны бояумен толтырыныз’

XP=100

YP=250

Fill Stile=0

Fill Color=QBColor(14)

Line (XP, YP/2)-(XP*2, YP/2), QBColor(3)

Line (XP*2, YP/2)-(XP502, YP), QBColor(3)

Line (XP+50, YP)-(XP, YP/2), QBColor(3)

‘сурет салудың нүктесін жасанды түрде араластырамыз’

PSet (XP+50, YP-50, Y-55, QBColor(3)

Flood Fill hds, XP+50, YP55, QBColor(0)

End Sub

Private Sub Form Load ()

Form1.ScaleMode=3

Form1.AutoRedraw=True

Form1.Height=4800

Form1.Width=4800

End Sub

 

2-            мысал. Гарфикалық тәсілді пайдаланып «Сызықтардың әсерлері» деген бағдарлама құрамыз.

   Пішінге мына объектілерді орналастырындар: Caption- Start, Timer объектісін Interval- 1,Enabled- False.

Dim b, a, c As Long

Private Sub Command1_Click ()

Form1.Cls

Form Load

Timer1.Enabled=True

End Sub

Private Sub Command1_Click ()

End

End Sub

Private Sub Form Load ()

b=0

a=Form1.ScaleWidth

c= Form1.Scale Height

End Sub

Private Sub Timer1_Timer ()

b=b+100

a=a-100

Line (0, b)-(b, Form1. Scale Height), QBColor (14)

Line (Form1. Scale Width, a)-(a, 0), QBColor (12)

Line (b, Form1. Scale Width), QBColor (11)

Line (b, Form1. Scale Height)-(Form1. Scale Width, a), QBColor (15)

End Sub

3-           мысал. Графикалық тәсілді пайдаланып, «Шеңбердің әсерлері» бағдарламасын құрындар.

Caption қасиетінде: біріншісіне- 1 әсер, екіншісіне- 2 әсер, үшіншісіне- 3 әсер. Пішін үшін Caption қасиетіне- Шеңбердің әсері.

Dim A, b, c, ANGLE As Long

Private Sub Command1_Click ()

For c=1 To 10

For c=1 To 200 Step 5

For c=1 To 360 Step 20

ANGLE=A*3.141592654/180

Circle (b*Sin (ANGLE) +300, b*Cos (ANGLE) +225), b

Next A

If c=10 Then Fore Color=QbColor (0)

Fore Color= Int (Rnd*QbColor (15))

If c= 9 Then Fore Color= QbColor (2)

Next b

Next c

Fore Color= QbColor (15)

End Sub

Private Sub Command2_Click ()

Cls

C=Int (Rnd*6) +1

Circle (320, 40+rot), rot, QbColor (11)

Circle (320, 440-rot), rot, QbColor (10)

Circle (120+rot, 240), rot, QbColor (13)

Circle (520-rot, 240), rot, QbColor (14)

Circle (320-(20000^0.5) + (0.5^.05)*(rot), 240+(20000^0.5)-(0.5^0.5)*(rot)), rot, QbColor (11)

Circle (320) + (20000^0.5) - (0.5^0.5)*(rot), 240 + (20000^0.5) - (0.5^0.5)*(rot)), rot, c+6

Circle (320-(20000^0.5) + (0.5^0.5)*(rot), 240-(20000^0.5) + (0.5^0.5)*(rot)), rot, c+7

Circle (320+ (2000^0.5)-(0.5^0.5)*(rot), 240-(2000^0.5) + (0.5^0.5)*(rot)), rot, c+8

Line (rot, 0) - (rot, 480), 0

Line (640, rot, 0) - (640-rot, 480), 0

Line (0, rot) - (640, rot), 0

Line (0, 480- rot) - (640, 480, rot), 0

Next rot

End sub