Терезе формасының динамикалық өзгеруі
Жұмыс кезінде терезе формасын динамикалы өзгертуге қажетті программалар бар (мысалы, Microsoft Office-тегі анимацияланған бейне). Бұлардың барлығын жүзеге асыру аса қиын емес. Ол үшін PictureBox.Change оқиғасына келесі кодты енгізу керек:
lRgn = lGetRegion(frmTestRgnSkin.pic, vbWhite)
SetWindowRgn frmTestRgnSkin.hWnd, lRgn, True
DeleteObject lRgn
SetFormPosition frmTestRgnSkin.hWnd, True
Сонымен, бәрі дайын деуге болады, тек формадағы суретті өзгерту үшін кодты енгізу ғана қалды. Біздің мысалда суретті Timer-де циклдық тұрғыда өзгертеміз, анимация үздіксіз болады. Сонымен, формаға Timer–ді енгіземіз және оған PictureBox-тегі суреттің өзгеруіне жауап беретін шағын кодты орналастырамыз. Файлдағы суреттер ресурстары он шақты, сондықтан І 101 ден 110-ға дейін өзгеруі тиіс. Өзгерту коды мынадай:
Static i As Long
If i < 101 Then i = 101
If i > 110 Then i = 101
frmAnimateForm.pic.Picture = LoadResPicture(i, vbResBitmap)
i = i + 1
Осылайша, жобаны іске қосуға болады, ал егер де Сіз Pentium ІІІ немесе Athlon компьютерлерінің иегері болсаңыз, онда жасаған программаңыз қозғалмалы болады. Ал Сіздің процессорыңыз Pentium ІІ немесе одан да төмен болса, онда компьютер қажетті есептеулерді бізге керек уақыт ішінде орындай алмайды, өйткені жай анимация үшін секундына 15 кадрды көрсету қажет, дәлірек айтсақ, әрбір 80 миллисекунд сайын бір кадр және компьютердің өзге да міндеттері үшін тағы да уақыт қалдыру керек. Көріп тұрғанымыздай, біздің алгоритмдеріміз бұндай міндеттер үшін айқын шамасы жетпейді және терезе формасының жылдам өзгерістерін талап етпейтін «жұмыстар» үшін арналған, мысалы Celeron 333-те бір кадр шамамен 100 миллисекундта қалыптасады. Бұндай жағдайда алгоритмді жылдам анимация үшін оңтайландыру керек?
Алгоритмді жылдам анимация үшін оңтайландыру
Алгоритмді талдау жұмысы көрсеткендей, уақыт шығынының көп бөлігі GetPixel функциясына жұмсалады. Бұның басты себебі сурет талдауының тікелей экранда жүретіндігінде. Алгоритмнің жылдам әрекетін арттырудың бірден бір жолы, бұл талдауды компьютер жадына көшіру және бұндайда Win 32 API-ді қолдану. Бұндай алгоритмдер бар, жұмысты оңтайландыру үшін алгоритм әрбір түс тереңдігі үшін бөлек жазылады және осындай сұлбаны қолдануда жылдам әрекет 4 есеге дейін арта түседі және кез-келген анимацияны жасауға мүмкіндік береді.
3 VISUAL BASIC ПРОГРАММАЛАУ ТІЛІНДЕ СТАНДАРТТЫ ЕМЕС ФОРМАЛАРДЫ ҚҰРУ ЖОЛДАРЫН ОҚЫТУҒА АРНАЛҒАН КӨМЕКШІ ЭЛЕКТРОНДЫ ОҚУ ҚҰРАЛЫНА СИПАТТАМА
Бұл көмекші құрал Visual Basic программалау тіліне тоқтала келіп, онда құрылатын стандартты емес формаларды құру жолдарын үйретуге арналған. Көмекші құралды пайдаланып Visual Basic программалау тілін оқыту мұғалімнің жұмысын жеңілдетіп қана қоймай, сонымен қатар оқушылардың да өздігінен білімін көтеруге көмектеседі.
Көмекші құралдың жасалудағы мақсаты – ол оқушыларға берілетін Visual Basic программалау тілін және оның мүмкіндіктерін және осы тілде күрделі формаларды құру жолдарын оқытуды автоматтандыра отырып, оқытуды жеңілдету болып табылады.
Суретте көрсетілгендей электрондық көмекші құрал негізгі екі бөлімнен тұрады.
Бірінші бөлім «Бастау» деп аталады. Мұнда жалпы программалау тілдеріне тоқтала келіп Visual Basic бағдарламалау тіліне және оның мүмкіндіктеріне сипаттама беріледі. Сол сияқты осы программалау тілінің программалық құрылымы, синтаксисі, элементтерін қалай пайдалуға болатындығы туралы, теориялық материалдар келтірілген.
Екінші «Visual Basic - тегі стандартты емес формалар» деп аталатын бөлімде стандартты емес формаларды құру жолдарын үйретуге және Visual Basic-тегі стандартты емес формаларға байланысты мысалдар қарастырылған. Менің түлектік жұмысымда қарастырған күрделі формалар немесе қызықты программалар бұл тілді оқып үйренушілерді қызықтыра түсеріне кәміл сенемін.
Көмекші құралдың программасы
Begin VB.Form Form1
BorderStyle = 1 'Fixed Single
Caption = "Form1"
ClientHeight = 10590
ClientLeft = 60
ClientTop = 750
ClientWidth = 15015
Icon = "VISUAL~2.frx":0000
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
Picture = "VISUAL~2.frx":6852
ScaleHeight = 10590
ScaleWidth = 15015
StartUpPosition = 2 'CenterScreen
Begin SHDocVwCtl.WebBrowser WB1
Height = 8415
Left = 1080
TabIndex = 0
Top = 960
Visible = 0 'False
Width = 12975
ExtentX = 22886
ExtentY = 14843
ViewMode = 0
Offline = 0
Silent = 0
RegisterAsBrowser= 0
RegisterAsDropTarget= 1
AutoArrange = 0 'False
NoClientEdge = 0 'False
AlignLeft = 0 'False
NoWebView = 0 'False
HideFileNames = 0 'False
SingleClick = 0 'False
SingleSelection = 0 'False
NoFolders = 0 'False
Transparent = 0 'False
ViewID = "{0057D0E0-3573-11CF-AE69-08002B2E1262}"
Location = "http:///"
End
Begin VB.Menu Bass
Caption = "Бастау"
Begin VB.Menu Kirr
Caption = "Кіріспе"
End
Begin VB.Menu vbtil
Caption = "Visual Basic программалау тілі"
Begin VB.Menu vbtj
Caption = "Visual Basic программасы жайлы"
End
Begin VB.Menu modpr
Caption = "Модульдер мен процедуралар"
End
Begin VB.Menu funk
Caption = "Функциялар"
End
Begin VB.Menu derek
Caption = "Деректер типі"
End
Begin VB.Menu aktiv
Caption = "Activex платформасы"
End
End
Begin VB.Menu endd
Caption = "Шыгу"
End
End
Begin VB.Menu Vbctfor
Caption = "Visual Basic - тегі стандартты емес формалар"
Begin VB.Menu vbstf
Caption = "Visual Basic - тегі стандартты емес формаларды куру жолдары"
End
Begin VB.Menu visal
Caption = "Мысалдар"
Begin VB.Menu cagg
Caption = "Cагат"
End
Begin VB.Menu kissfr
Caption = "Кисык форма"
End
Begin VB.Menu zhul
Caption = "Жулдызша"
End
Begin VB.Menu Karr
Caption = "Машина"
End
Begin VB.Menu kub
Caption = "Куб туріндегі форма"
End
Begin VB.Menu ellips
Caption = "Эллипс туріндегі форма"
End
Begin VB.Menu curet
Caption = "Суретті айналдыру"
End
End
Begin VB.Menu Korr
Caption = "Кортынды"
End
End
Begin VB.Menu oprog
Caption = "Программаны жасаган"
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function CreateRoundRectRgn Lib "gdi32" (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
Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long
Private Function SetCreateForm(ByVal propHwnd As Long, ByVal propHDC As Long)
Dim rNew As Long
Dim rComb As Long
Dim vDC As Long
' Функция SetCreateForm сгенерирована
' с помощью программы «Creator Forms 1.3»
' AftarSoft
' http://pva-land.jino-net.ru/
' http://pva-land.jino-net.ru/feedback.php?insoft=2&ver=1.3 - Сюда замечания и пожелания
vDC = propHDC
rComb = CreateRectRgn(2, 0, 1000, 700)
rNew = CreateRectRgn(33, 157, 65, 314)
CombineRgn rComb, rComb, rNew, 4
DeleteObject rNew
rNew = CreateRectRgn(33, 508, 67, 668)
CombineRgn rComb, rComb, rNew, 4
DeleteObject rNew
rNew = CreateRectRgn(947, 156, 981, 316)
CombineRgn rComb, rComb, rNew, 4
DeleteObject rNew
rNew = CreateRectRgn(947, 509, 980, 667)
CombineRgn rComb, rComb, rNew, 4
DeleteObject rNew
rNew = CreateEllipticRgn(32, 340, 66, 380)
CombineRgn rComb, rComb, rNew, 4
DeleteObject rNew
rNew = CreateEllipticRgn(33, 389, 68, 430)
CombineRgn rComb, rComb, rNew, 4
DeleteObject rNew
rNew = CreateEllipticRgn(33, 440, 67, 479)
CombineRgn rComb, rComb, rNew, 4
DeleteObject rNew
rNew = CreateEllipticRgn(946, 334, 981, 376)
CombineRgn rComb, rComb, rNew, 4
DeleteObject rNew
rNew = CreateEllipticRgn(945, 384, 981, 425)
CombineRgn rComb, rComb, rNew, 4
DeleteObject rNew
rNew = CreateEllipticRgn(945, 432, 983, 474)
CombineRgn rComb, rComb, rNew, 4
DeleteObject rNew
rNew = CreateRoundRectRgn(-1, 174, 19, 648, 20, 20)
CombineRgn rComb, rComb, rNew, 4
DeleteObject rNew
rNew = CreateRoundRectRgn(986, 168, 1002, 660, 20, 20)
CombineRgn rComb, rComb, rNew, 4
DeleteObject rNew
rNew = CreateRoundRectRgn(52, 679, 964, 703, 20, 20)
CombineRgn rComb, rComb, rNew, 4
DeleteObject rNew
Call SetWindowRgn(propHwnd, rComb, 1)
End Function
Private Sub aktiv_Click()
WB1.Visible = True
WB1.Navigate ("c:\VisualBasic\txt\1.1\4.mht")
End Sub
Private Sub cagg_Click()
Dim RetVal
RetVal = Shell("C:\VisualBasic\primer\0\clock.exe", 1)
End Sub
Private Sub curet_Click()
Dim RetVal
RetVal = Shell("C:\VisualBasic\primer\Cube\photo.exe", 1)
End Sub
Private Sub derek_Click()
WB1.Visible = True
WB1.Navigate ("c:\VisualBasic\txt\1.1\3.mht")
End Sub
Private Sub ellips_Click()
Dim RetVal
RetVal = Shell("C:\VisualBasic\primer\Cir\Cir.exe", 1)
End Sub
Private Sub endd_Click()
End
End Sub
Private Sub Form_Load()
Call SetCreateForm(Form1.hwnd, Form1.hDC)
End Sub
Private Sub funk_Click()
WB1.Visible = True
WB1.Navigate ("c:\VisualBasic\txt\1.1\2.mht")
End Sub
Private Sub Karr_Click()
Dim RetVal
RetVal = Shell("C:\VisualBasic\primer\3\karr.exe", 1)
End Sub
Private Sub Kirr_Click()
WB1.Visible = True
WB1.Navigate ("c:\VisualBasic\txt\Kirispe.mht")
End Sub
Private Sub kissfr_Click()
Dim RetVal
RetVal = Shell("C:\VisualBasic\primer\1\prim1.exe", 1)
End Sub
Private Sub Korr_Click()
WB1.Visible = True
WB1.Navigate ("c:\VisualBasic\txt\korit.mht")
End Sub
Private Sub kub_Click()
Dim RetVal
RetVal = Shell("C:\VisualBasic\primer\4\kub.exe", 1)
End Sub
Private Sub modpr_Click()
WB1.Visible = True
WB1.Navigate ("c:\VisualBasic\txt\1.1\1.mht")
End Sub
Private Sub oprog_Click()
WB1.Visible = True
WB1.Navigate ("c:\VisualBasic\txt\autor.mht")
End Sub
Private Sub vbstf_Click()
WB1.Visible = True
WB1.Navigate ("c:\VisualBasic\txt\1.1\0055.mht")
End Sub
Private Sub vbtj_Click()
WB1.Visible = True
WB1.Navigate ("c:\VisualBasic\txt\1.1\0.mht")
End Sub
Private Sub zhul_Click()
Dim RetVal
RetVal = Shell("C:\VisualBasic\primer\2\Juldizcha.exe", 1)
End Sub
ҚОРЫТЫНДЫ
Программалық қорлардың даму барысында соңғы жылдары айтарлықтай өзгерістер болды. Программалық құралдардың келесі деңгейлерінде программаны машиналық кодпен жазу Ассемблер және Бейсік тілдерінде текстік редактор қолданылды. Қарапайым болып саналатын Бейсік тілі бүгінгі таңда өте мүмкіндігі мол программалық тілдердің бірі.
Microsoft Visual basic 6-ең жаңа программалау тілідерінің бірі болып табылады. Visual basic тілінде жұмыс істейтін жаңа үйренген бастаушыларға ең маңыздысы - жұмыс істеу ортасын жақсы танып, білу.
Кез келген программалау тілі бұл адам жасаған жасанды тіл. Яғни берілгенді өңдеу мақсатында қандай да бір анықталған мақсатты орындау. Өңделіп, орындалатын тапсырманың ауқымдылығына қарай программалау тілі де әмбебап болу керек. Бір жағынын бұл әмбебабтылық кейбір нақты есеп шешуге, пайдалануға жарамсыз болуы мумкін . Әр есептің түріне сәйкес өзінің тілдері қарастырылады. Мәселен шығарылатын есептер үшін ФОРТРАН, БЕЙСІК-ті айтуға болады. Кез келген программалау тілін сипаттауда оның өзіндік алфавиті, синтаксисі болады. Тілдің алфавиті программа құру кезінде пайдаланатын символдардың жиынтығы. Синтаксисі-еcептерді шешуде әртүрлі алгоритм жасауға болатын арнайы кострукциялық символдардан құралған тәртіпті анықтайды. Ендігі бір программалаудың негізгі ұғымы-оператор. Оператор деп белгілі бір әрекетті орындататын компьютерге берілетін бұйрықты айтамыз. Сонымен осындай программалау тілдерінің ең көп таралғандарының бірі-алгоритмлік тіл – бейсік тілі болып табылады. Оның аты ағылшын тілінен қысқартылған BASIC-Beginners All-Purpose Symbolic Instructional Code сөзін береді. Біз осы бейсік тілінің дамыған түрі-Windows жүйесінде программалауға арналған – Visual Basic тілін қарастырайық.
Ыңғайлы программалау тілінің шығуына сәйкес ғылымның көптеген салаларында, өнеркәсіпті басқаруда, компьютерді пайдаланып жұмыс атқару айтарлықтай өзгерістер алып келді.
Программаларда атқаратын қызметіне байланысты қолданбалы, жүйелік және аспаптық деп үш топқа бөлуге болады.
Достарыңызбен бөлісу: |