ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Графічні засоби мови Паскаль
         

     

    Інформатика, програмування

    Графічні засоби мови Паскаль

    Монітор персонального комп'ютера може працювати в двох режимах: текстовому і графічному. Все, що ви робили до цього часу, ви робили в текстовому режимі. Текстовий екран містить 2000 знакомісць - 25 рядків по 80 позицій, в кожному знакомісць може бути виведений один символ. Графічний екран складається з маленьких точок -- пікселів, кожен з яких закрашений в який-небудь колір. Для роботи в графічному режимі існує велика бібліотека процедур і функцій, що знаходяться в модулі Graph. Структуру модуля і правила створення користувацьких модулів ми розглянемо трохи пізніше. Щоб використовувати стандартні модулі, вам достатньо знати лише один оператор:

    USES модуль, ... ;

    Цей оператор повинен бути першим оператором в програмі, в ньому перераховуються всі модулі, які використовуються даною програмою; зокрема, щоб працювати з графікою, вам достатньо записати USES Graph;. Тепер розглянемо графічні засоби, що надаються цим модулем. Тут описані лише найбільш вживані і найбільш корисні, на думку автора, засоби. Той, хто хоче вивчити всі можливості модуля Graph, може зробити це, користуючись довідковою службою середовища Turbo Pascal (або Borland Pascal).

    1. PROCEDURE InitGraph (VAR GraphDriver, GraphMode: Integer; PathToDriver: STRING); - ця процедура ініціалізує графічний режим, тобто перемикає монітор з текстового режиму в графічний. Будь-які графічні процедури та функції можуть бути виконані тільки в графічному режимі. Перед викликом InitGraph необхідно першим аргументу присвоїти значення DETECT (константа, описана в модулі Graph). PathToDriver - Це рядок, що містить шлях до файлу - графічного драйверу, для моніторів від EGA до SVGA це файл EGAVGA.BGI. Графічні драйвери завжди містяться в директорії, де знаходиться сам Turbo Pascal (зазвичай в піддиректорії BGI). Ви можете або відшукати на диску це фото і в програмі встановити правильний шлях до нього, наприклад, 'D: TPBGI', або мати цей файл у вашій робочій директорії, тоді шлях задається символом нового рядка. Якщо ні те, ні інше не зроблено, графічний режим не буде ініціалізований.

    2. PROCEDURE CloseGraph; - закриває графічний режим.

    3. FUNCTION GetMaxX: Integer;.

    4. FUNCTION GetMaxY: Integer; - повертають відповідно номер самого правого і самого нижнього піксела екрана. Піксели нумеруються від 0 до GetMaxX зліва направо і від 0 до GetMaxY зверху вниз. Дозвіл графічного екрану залежить від типу монітора і від обраного графічного режиму. Наприклад, для монітора VGA максимальна роздільна здатність 640 '480, тобто GetMaxX поверне 639, а GetMaxY - 479.

    5. PROCEDURE SetBkColor (Color: Word); - встановлює фоновий колір, після її виконання весь екран буде закрашений в колір Color. Колірна палітра також залежить від типу монітора і вибраного графічного режиму, але стандартна палітра для кольорового монітора включає 16 кольорів:

    0 - Black 1 - Blue 2 - Green 3 - Cyan

    4 - Red 5 - Magenta 6 - Brown 7 - LightGray

    8 - DarkGray 9 - LightBlue 10 - LightGreen 11 - LightCyan

    12 - LightRed 13 - LightMagenta 14 - Yellow 15 - White

    Наведені назви - це імена констант, що описані в модулі Graph; ви можете використовувати їх або номери кольорів.

    6. PROCEDURE SetViewPort (x1, y1, x2, y2: Integer; Clip: Boolean); - встановлює графічне вікно. x1, y1, x2, y2 - координати відповідно лівого верхнього і правого нижнього кутів вікна. Після виконання цієї процедури пікселі будуть відраховуватися від лівого верхнього кута вікна. Логічний параметр Clip визначає, чи слід усікаємо зображення на кордонах вікна. Виконувати цю процедуру зовсім не обов'язково, за замовчуванням графічне вікно займає весь екран.

    7. PROCEDURE ClearDevice; - зафарбовує екран фоновим кольором.

    8. PROCEDURE PutPixel (X, Y: Integer; Color: Word); - зафарбовує піксель з координатами X, Y кольором Color.

    9. FUNCTION GetPixel (X, Y: Integer): Word; - повертає колір пікселя з координатами X, Y.

    10. PROCEDURE SetColor (Color: Word); - встановлює колір ліній, всі виведені на екран лінії будуть мати колір Color до виконання наступної процедури SetColor.

    11. PROCEDURE SetLineStyle (LineStyle, Pattern, Thickness: Word); - встановлює стиль ліній, діє для всіх виведених ліній до виконання SetLineStyle з іншими аргументами. Параметр LineStyle може приймати наступні значення:

    0 - SolidLn - суцільна лінія;

    1 - DottedLn - пунктирна лінія;

    2 - CenterLn - штрих-пунктирна лінія;

    3 - DashedLn - штрихова лінія;

    4 - UserBitLn - лінія, що задається програмістом.

    Якщо стиль лінії - 4, то форма лінії визначається другим параметром процедури - Pattern. Товщина лінії може приймати всього два значення:

    1 - NormWidth - тонка лінія;

    3 - ThickWidth - жирна лінія.

    12. PROCEDURE Line (x 1, y1, x2, y2: Integer); - малює відрізок прямої від точки з координатами x1, y1 до точки x2, y2.

    13. PROCEDURE MoveTo (x, y: Integer); - переміщує графічний курсор у точку x, y. Графічний курсор не видно на екрані, але ряд процедур використовує поточне положення графічного курсору.

    14. PROCEDURE LineTo (x, y: Integer); - малює відрізок від поточної точки (поточного положення графічного курсору) до точки x, y.

    15. PROCEDURE MoveRel (Dx, Dy: Integer); - переміщує графічний курсор на Dx по горизонталі і на Dy по вертикалі.

    16. PROCEDURE LineRel (Dx, Dy: Integer); - малює відрізок від поточної точки до точки із зсувом Dx, Dy.

    17. FUNCTION GetX: Integer; і

    18. FUNCTION GetY: Integer; - повертають поточні координати графічного курсору.

    19. PROCEDURE Rectangle (x1, y1, x2, y2: Integer); - малює прямокутник, x1, y1 -- координати лівого верхнього кута, x2, y2 - координати правого нижнього кута.

    20. PROCEDURE Circle (X, Y: Integer; R: Word); - малює коло радіуса R з центром в точці X, Y.

    21. PROCEDURE Ellipse (X, Y: Integer; f1, f2, Rx, Ry: Word); - малює дугу еліпса з півосями Rx, Ry і центром в точці X, Y від кута f1 до кута f2 (кути задаються у градусах).

    22. PROCEDURE Arc (X, Y: Integer; f1, f2, R: Word); - малює дугу кола радіуса R з центром в точці X, Y від кута f1 до кута f2.

    23. PROCEDURE SetFillStyle (Pattern, Color: Word); - встановлює спосіб зафарбовування. Параметр Pattern може приймати такі значення: 0 - EmptyFill - не зафарбовувати, 1 - SolidFill - суцільна зафарбування, 2 - LineFill, 3 - LtSlashFill,

    4 - SlashFill, 5 - BkSlashFill, 6 -- LtBkSlashFill, 7 - HatchFill, 8 - XHatchFill,

    9 - InterleaveFill, 10 -- WideDotFill, 11 - CloseDotFill.

    24. PROCEDURE Bar (x1, y1, x2, y2: Integer); - малює зафарбований прямокутник, використовуючи спосіб зафарбовування, встановлений процедурою SetFillStyle.

    25. PROCEDURE FillEllipse (X, Y: Integer; Rx, Ry: Word); - малює зафарбований еліпс.

    26. PROCEDURE Sector (X, Y: Integer; f1, f2, Rx, Ry: Word); - малює зафарбований еліптичний сектор.

    27. PROCEDURE PieSlice (X, Y: Integer; f1, f2, R: Word); - малює зафарбований круговий сектор.

    28. PROCEDURE FloodFill (X, Y: Integer; Border: Word); - зафарбовує закриту область, обмежену лінією кольору Border, X, Y - координати будь-якої внутрішньої точки області. Використовується спосіб зафарбовування "заливання рідиною", тому, якщо обмежує лінія має розриви, "рідина" виллється і пофарбувати всі області екрану, які зможе. Автор рекомендує самостійно провести експеримент з цієї процедурою.

    29. PROCEDURE SetTextStyle (Font, Direction, Size: Word); - встановлює спосіб перегляду тексту. Font - номер графічного шрифту, що приймає значення 0 -- DefaultFont, 1 - TriplexFont, 2 - SmallFont, 3 - SansSerifFont,

    4 - GothicFont. Нульовий шрифт - стандартний і підтримується завжди. Якщо ви використовуєте штрихові шрифти з 1-го по 4-й, то повинні мати на вашій робочій директорії шрифтові файли TRIP.CHR, LITT.CHR, SANS.CHR, GOTH.CHR (ті з них, які вам потрібні). Параметр Direction визначає напрямок перегляду тексту (зліва направо чи зверху вниз) і приймає значення 0 - HorizDir, 1 - VertDir. Параметр Size визначає розмір символів і змінюється від 1 до 10.

    30. PROCEDURE OutText (S: STRING); - виводить текст на графічний екран, використовуючи поточні координати графічного курсору (процедура WRITE [LN] в графічному режимі не працює).

    31. PROCEDURE OutTextXY (X, Y: Integer; S: STRING); - виводить текст на графічний екран, використовуючи координати X, Y.

    32. PROCEDURE SetTextJustify (Horiz, Vert: Word); - встановлює спосіб позиціонування тексту. Параметр Horiz може приймати значення:

    0 - LeftText - по лівому краю,

    1 - CenterText - по середині тексту,

    2 - RightText - по правому краю.

    Параметр Vert може приймати значення:

    0 - BottomText - по нижньому краю,

    1 - CenterText - по середині тексту,

    2 - TopText - по верхньому краю.

    Не нехтуйте цією процедурою, якщо хочете акуратно вивести підписи до вашого малюнку.

    33. FUNCTION TextWidth (S: STRING): Word; - повертає довжину тексту у пікселях.

    34. FUNCTION TextHeight (S: STRING): Word; - повертає висоту тексту у пікселях.

    35. PROCEDURE SetVisualPage (Page: Word); - встановлює видиму графічну сторінку (якщо в даному графічному режимі є кілька відеосторінок). Page -- номер сторінки, що дорівнює 0,1 і т.д.

    36. PROCEDURE SetActivePage (Page: Word); - встановлює поточну графічну сторінку, куди буде направлений весь висновок. Дві останні процедури можуть бути використані для створення мультиплікації.

    37. PROCEDURE SetGraphMode (Mode: Integer); - встановлює графічну моду. Більшість графічних драйверів допускає кілька мод. Який графічний драйвер задіяний в даному комп'ютері, можна дізнатися за значенням параметра GrDriver після виконання процедури InitGraph. Присвоюючи цієї змінної значення DETECT, ми не ставимо жодного драйвера, а лише вказуємо, що процедура сама повинна визначити цей драйвер. У Паскалі визначені наступні константи драйверів: DETECT = 0, CGA = 1, MCGA = 2, EGA = 3, EGA64 = 4, EGAMONO = 5, IBM8514 = 6, HERCMONO = 7, ATT400 = 8, VGA = 9, PC3270 = 10. При успішному виконанні процедура InitGraph поверне одне з цих значень через параметр GrDriver. Параметри GrMode присвоюється значення встановленої графічної моди (від 0 до 4), причому встановлюється старша мода. У драйвера VGA є три моди, розрізняються дозволом екрану і кількістю відеосторінок:

    0 - 640 '200, 4 сторінки,

    1 - 640 '350, 2 сторінки,

    2 - 640 '480, 1 сторінка.

    іменовані константи для графічних мод також описані в модулі Graph; так, для перерахованих вище мод це: VGALo, VGAMed, VGAHi.

    38. FUNCTION GetGraphMode: Integer; - повертає встановлену графічну моду.

    39. PROCEDURE RestoreCrtMode; - встановлює текстовий режим монітора. Ця процедура спільно з SetGraphMode може використовуватися для налагодження графічних програм. Припустимо, що ми написали, але поки ще не налагодили графічну програму. Ми хочемо вивести будь-яку інформацію, яка обчислюється програмою, на екран, але використовувати для виведення процедуру OutText досить важко. Організуємо нашу програму в такий спосіб:

    ... InitGraph ... (Тут ми хочемо вивести інформацію) RestoreCrtMode; WRITELN (...

    (Повернемося в графіку) SetGraphMode (GetGraphMode); ...

    40. FUNCTION GraphResult: Integer; - повертає код завершення останньої графічної операції; якщо цей код дорівнює grOK (= 0), то операція виконана успішно, в іншому випадку сталася помилка.

    Щоб продемонструвати деякі з графічних можливостей мови Паскаль, напишемо програму, рісующую графік функції cos2x на відрізку [0,6 p].

    USES Graph;

    CONST ScreenColor = DarkGray; (колір екрана)

    LineColor = Yellow; (колір кривої)

    TextColor = White; (колір підписів)

    AxisColor = LightCyan; (колір координатних осей)

    CONST n = 200; (кількість відрізків в графіку)

    LeftBlank = 100; (відступ зліва)

    RightBlank = 100; (відступ праворуч)

    TopBlank = 100; (відступ зверху)

    BottomBlank = 60; (відступ знизу)

    TicSize = 5; (розмір поділів на осях)

    PowerSize = 3; (розмір цифри 2 (показник ступеня))

    TicsNumY = 10; (кількість поділок на осі Y)

    TicsNumX = 6; (кількість поділок на осі Y)

    CONST x1 = 6 * Pi;

    FUNCTION f (x: REAL): Real; BEGIN f: = Sqr (Cos (x)); END;

    VAR GrDriver, GrMode, Lx, Ly, Px, Py: Integer;

    i: Word;

    s: STRING;

    Mx, My, x: Real;

    BEGIN (ініціалізіруем графічний режим)

    GrDriver: = DETECT; InitGraph (GrDriver, GrMode ,'');

    (закрасимо екран фоновим кольором)

    SetFillStyle (1, ScreenColor); Bar (0,0, GetMaxX, GetMaxY);

    (обчислимо довжини осей і положення початку координат)

    Lx: = GetMaxX +1- LeftBlank-RightBlank;

    Ly: = GetMaxY +1- TopBlank-BottomBlank;

    Px: = LeftBlank; Py: = GetMaxY-BottomBlank;

    (намалюємо осі)

    SetColor (AxisColor);

    MoveTo (LeftBlank, TopBlank-1); LineRel (0, Ly); LineRel (Lx, 0);

    (оціфруем вісь X)

    SetTextJustify (CenterText, TopText);

    FOR i: = 1 TO TicsNumX DO BEGIN

    MoveTo (LeftBlank + i * Lx DIV TicsNumX, Py); LineRel (0, TicSize);

    IF i = 1 THEN s: =''ELSE Str (i, s); MoveRel (0,2); OutText (s + 'Pi');

    END;

    (оціфруем вісь Y)

    SetTextJustify (RightText, CenterText);

    FOR i: = 1 TO TicsNumY DO BEGIN

    MoveTo (Px, Py-i * Ly DIV TicsNumY); LineRel (-TicSize, 0);

    Str (i/10: 3:1, s); MoveRel (-2,0); OutText (s);

    END;

    (виведемо пояснювальний текст)

    SetTextJustify (CenterText, CenterText); SetColor (TextColor);

    MoveTo (LeftBlank + Lx DIV 2, TopBlank DIV 2);

    OutText ( 'графік функції Cos (x )');

    (виведемо показник ступеня)

    MoveRel (TextWidth ( 'графік функції Cos (x) ') DIV 2-TextWidth (' (x) '), TextHeight (' s'));

    SetTextStyle (SmallFont, 0, PowerSize); OutText ('2 ');

    (обчислимо масштаби по X і Y)

    Mx: = Lx/x1; My: = Ly;

    (намалюємо графік)

    SetLineStyle (0,0,3); SetColor (LineColor); MoveTo (Px, Py-Ly);

    FOR i: = 1 TO n DO BEGIN

    x: = i * x1/n; LineTo (Px + Round (Mx * x), Py-Round (My * f (x )));

    END;

    (зробимо затримку)

    READLN;

    (перейдемо в текстовому режимі)

    CloseGraph;

    END.

    Це непогана програма, але автор хотів би застерегти від її бездумного використання як еталону в усіх випадках. Вона використовує апріорну інформацію про вид зображуваної функції: мінімальне значення функції = 0, максимальне значення функції = 1, початок координат знаходиться в точці перетину осей і т.п. У ваших програмах все може бути не так.

    Список літератури

    Для підготовки даної роботи були використані матеріали з сайту http://elib.albertina.ru/

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status