Привіт, постійні читачі мого сайту про програмування і математики. На цій сторінці розглянемо процедури Rectangle, DrawRectangle, FillRect / FillRectangle графічного модуля GraphABC для малювання прямокутників. Чому так багато процедур? Чому б не обійтися однієї якої-небудь підпрограмою? Та тому, що різні процедури малюють прямокутники по-різному. Почнемо з визначення першої з них.
процедура Rectangle
✎ procedure Rectangle (x1, y1, x2, y2: integer);
- Малює заповнений прямокутник, заданий координатами протилежних вершин (x1, y1) і (x2, y2)
Прямокутник, побудований за допомогою Rectangle має кордони і його можна залити (зафарбувати), попередньо поставивши колір процедурою SetBrushColor (.). Для завдання товщини кордону викликаємо процедуру SetPenWidth (.). для кольору кордону викликаємо SetPenColor (.).
Ми вже згадували раніше, що тут в розділі про графік ми всюди маємо справу з пікселями. Найбільш широко робота з пікселями і згладжуванням зображень ведеться в сучасному телебаченні з високою роздільною здатністю, або технологій, які працюють з ним. Прикладом може служити приставка tv box cs918 android.
Слід пам'ятати: якщо не ставити кольору і товщину кордону, то задіюються умовчання - товщина кордону 1px, колір кордону - чорний, колір заливки - білий. Тому, щоб показати наш прямокутник "у всій красі", задамо деякі параметри самі. Візьміть код нижче і вставте в середу PascalABC або PascalABC.Net. Взагалі я рекомендую не копіювати, а переписувати руками (якщо, звичайно, код не надто великий), оскільки так краще запам'ятовується, сам перевірив. Дивимося, що у нас вийшло:
Код PascalABC, PascalABC.Net
процедура DrawRectangle
✎ procedure DrawRectangle (x1, y1, x2, y2: integer);
- Малює кордон прямокутника, заданого координатами протилежних вершин (x1, y1) і (x2, y2)
Процедура DrawRectangle малює тільки кордон прямокутника і не заливає область кольором (застосовувати SetBrushColor безглуздо - вона не спрацює). До того ж, дана підпрограма відсутня у простому PascalABC. Тому відкриваємо PascalABC.Net і запускаємо на виконання наступний код.
Якщо приберемо 8 і 9 рядка коду (товщина і колір пера), то межа нашого прямокутника буде чорної і товщиною 1px. До речі, використовувати змінні x1, x2, y1, y2 для координат не обов'язково - їх записано тільки для наочності. Можна просто вставити числа в процедуру, і тоді попередня програма буде виглядати так:
Процедури FillRect, FillRectangle
Процедури FillRect і FillRectangle роблять одне і те ж - заповнюють область прямокутника кольором. Сам прямокутник при цьому меж не має, тому ставити колір і товщину за допомогою пера Pen не має сенсу - ніякої межі не буде. Різниця між ними в даному випадку в тому, що FillRectangle відсутня в PascalABC, зате у версії PascalABC.Net присутні обидва варіанти.
Ось визначення кожної з них:
✎ procedure FillRect (x1, y1, x2, y2: integer);
- Заливає прямокутник, заданий координатами протилежних вершин (x1, y1) і (x2, y2), кольором поточної кисті.
✎ procedure FillRectangle (x1, y1, x2, y2: integer);
- Заповнює внутрішність прямокутника, заданого координатами протилежних вершин (x1, y1) і (x2, y2)
Проста програма, що демонструє сказане вище. Для заливки прямокутника ми використовували тут процедуру FillRect, тому дану програму можна запускати як мінімум в PascalABC і PascalABC.Net.
Код PascalABC, PascalABC.Net
Ось схожі теми:
div> .uk-panel '> "data-uk-grid-margin>