Урок 12 Други свойства на графичния прозорец
GraphicsWindow е обект в Small Basic и в предишния урок ние видяхме че в него можем да чертаем линии, фигури . В този прозорец можем да поставяме бутони и текстови полета.
Да повторим някои от свойствата и методите на GraphicsWindow като същевременно добавим и нови.
DrawLine(x1,y1,x2,y2) чертае линия от точка (x1, y1) до точка (x2, y2)
DrawRectangle(x,y,w,h) Начертава правоъгълник с ширина w и височина h пиксела, като горния лев ъгъл на правоъгълника се намира в точка е с координати (x, y)
DrawEllipse(x,y,w,h) Чертае елипса с ширина w и височина в h пиксела. Параметрите x и y за координатите на левия връх на правоъгълника в който може да се впише елипсата
SetPixel(x,y,color) Отбелязва точка с координати (x, y) в цвят, който е зададен.
FillRectangle(x,y,w,h) Начертава запълнен правоъгълник / предварително е дефиниран цвят/ с ширина w и височина h пиксела, като горния лев ъгъл на правоъгълника се намира в точка е с координати (x, y)
FillEllipse(x,y,w,h) Чертае запълнена елипса с ширина w и височина т в h пиксела. Параметрите x и y за координатите на левия връх на правоъгълника, в който може да се впише елипсата
DrawText(x,y,st) Извежда от точка (x, y) текста st
В предходния урок ние използвахме методите за чертаене на линия, правоъгълник и елипса.
Да опитаме как ще използваме метода за въвеждане на текст в графичния прозорец
Задача 1. Начертайте вложени един в друг квадрати като най-малкия е със страна 2 пиксела и пресечената точка на диагонала бъде с координати (100, 100). Нека броят на квадратите да бъде 20.
Забележка: Използвайте черен цвят за фон на графичния прозорец и червен цвят за молива. Така ще усетите илюзията за създаване на 3 ефект / светло върху тъмно/
Решение: За решението ще използваме цикъл. Определяме координатата на горния ляв ъгъл на най-малкия квадрат като от центъра изваждаме 1. Подготвяме се за изпълнение на цикъл. Стъпката ще бъде 5 защото броят на квадратите, които искаме да начертаем е 20. Страната на квадрата ще я получаваме като броячът умножаваме по дължината на страната на най-малкия квадрат. Така вторият квадрат ще има страна 10, третият 20, четвъртият 30, а последния 200. Ако искаме изображението да се вмести в целия графичен прозорец би трябвало да използваме 200 за дефиниране на неговата ширина и височина.
GraphicsWindow.BackgroundColor = "Black"
GraphicsWindow.PenColor = "Red"
GraphicsWindow.Width = 200
GraphicsWindow.Height = 200
For i = 1 To 100 Step 5
GraphicsWindow.DrawRectangle(100 - i, 100 - i, i * 2, i * 2)
EndFor
Резултатът от изпълнение на програмния код ще бъде:
Нека променим ширината на графичния прозорец за да получим празно поле от дясно и отдолу на фигурата.
Ако дадем на
GraphicsWindow.Width = 300
GraphicsWindow.Height = 300
Ще получим следното:
Ефектът за 3D вече не е толкова голям, но се забелязва
Ще се опитаме да наместим фигурата в средата.
За да направим това, ние трябва да определим координатите центъра на този графичен прозорец – 150, 150. Нанасяме необходимите промени в програмния код
GraphicsWindow.DrawRectangle(150 - i, 150 - i, i * 2, i * 2)
И изпълняваме отново програмата
Резултатът е следния:
Помислете какви промени трябва да направите в програмния код за да увеличите броя на квадратите с 2, 5, 10 .
Ще продължим да променяме кода като сега ще поставим в празното поле отдолу текста „Това са вложени един във друг квадрати.
Кодът който трябва да имате в редактора е следния:
А резултатът от изпълнението ще бъде:
Нека да решим подобна задача, като за целта извеждаме не квадрат, а окръжност.
Задача 2.
Ще работим с цвят на графичния прозорец по подразбиране – бял, а цветът на молива нека бъде зелен. Трябва да се въведен следния код :
Нека променим фона на графичния прозорец на черен, да дадем светла стойност на молива и да сравним получените резултати.
Обяснете защо единия резултат създава 3D илюзия.
Нека допълним програмния код с още един ред.
GraphicsWindow.ShowMessage( "Това е илюзия за 3D", "здравейте")
Изпълнението му ще изведе заедно с графичното изображение и следното съобщение:
За да се затвори това съобщение е необходимо да щракнете върху бутона ОК с мишката. В следващ урок ние ще се научим да управляваме програмно тези събития
Новата опреация в графичния прозорец има следния синтаксис
GraphicsWindow.ShowMessage( "съобщение ", "наименование на прозореца за съобщение")
Нека разгледаме някои допълнителни свойста на текста, които използва методът DrawText. Te са свързани с името, размера, стила и цвета на шрифта.
FontBold и FontItali– може да получава стойности False или True
FontItalic свири или определя дали шрифта, който да се използва при изготвянето на текста на graphicswindow е курсив.
FontName =”име на шрифт” FontSize = стойност / размер на шрифта в пиксели/
Цветовете могат да се задават от програмиста с тяхното име, заградено в кавички като константа. В Small Basic са определени 142 цвята – 9 с оттенък на червено, 6 на розово 6 на оранжаво, 24 с оттенък на синьо 18 на пурпурно, 23 на зелено 11 жълти, 17 бели , 17 с оттенък на кафяво и 10 на в сиво.
С помощта на функцията GetColorFromRGB ние можем да създаваме собствени цветове като задаваме стойности от 0 до 255 за (Red), (Green), (Blue)
Пример: color = GraphicsWindow.GetColorFromRGB(205,127,50)
Създаденият цвят има стойност Red= 205, Green=127 и Blue=50
Задача3. Напишете програма, която чертае 3 хоризонтални линии с различни цветове
GraphicsWindow.PenColor = "Tomato"
GraphicsWindow.DrawLine(10,20,100,20)
GraphicsWindow.PenColor = "ForestGreen"
GraphicsWindow.DrawLine(10,30,100,30)
GraphicsWindow.PenColor = "SkyBlue"
GraphicsWindow.DrawLine(10,40,100,40)
Резултатът от изпълнението на програмния код ще бъде:
Задача 4. Ще се опитаме да изведем в графичния прозорец името на езика за програмиране по различен начин – с шрифт Tahoma, размер от 20,18,… 10 и цвят DeepSkyBlue и MediumBlue. Първият извод да бъде наклонен, а следващите удебелени.
Решение:
GraphicsWindow.FontName = "Tahoma"
GraphicsWindow.FontSize = 20
GraphicsWindow.FontItalic = "True"
GraphicsWindow.BrushColor = "DeepSkyBlue"
GraphicsWindow.DrawText(20,20,"Microsoft Small Basic")
x = 20
y = 50
GraphicsWindow.FontItalic = "False"
GraphicsWindow.BrushColor = "MediumBlue"
For s =10 To 20 Step 2
GraphicsWindow.FontSize = s
GraphicsWindow.DrawText(x,y,"Microsoft Small Basic")
y=y+s
EndFor
Задачи:
След този урок вие трябва да можете :