W Cat - Описание языка PascalABC.NET
- Название:Описание языка PascalABC.NET
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
W Cat - Описание языка PascalABC.NET краткое содержание
PascalABC.NET — это язык программирования Паскаль нового поколения, включающий классический Паскаль, большинство возможностей языка Delphi, а также ряд собственных расширений. Он реализован на платформе Microsoft.NET и содержит все современные языковые средства: классы, перегрузку операций, интерфейсы, обработку исключений, обобщенные классы и подпрограммы, сборку мусора, лямбда-выражения, средства параллельного программирования.
PascalABC.NET является мультипарадигменным языком: на нем можно программировать в структурном, объектно-ориентированном и функциональном стилях.
PascalABC.NET — это также простая и мощная интегрированная среда разработки, поддерживающая технологию IntelliSense, содержащая средства автоформатирования, встроенный отладчик и встроенный дизайнер форм.
Описание языка PascalABC.NET - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Но не во всех случаях использование критических секций помогает обеспечить корректную работу параллельных конструкций.
vara:integer := 0;
{$omp parallel sections}
begin
{$omp critical}
a:=1;
{$omp critical}
a:=a+1;
end;
Значение переменной a зависит от того, в каком порядке выполнятся секции. Если первая секция выполнится раньше, значение a будет равно двум, иначе – единице.
При использовании критических секций возможно возникновение взаимоблокировок. Например, первый поток выполняет код, содержащий критическую секцию A, внутри которой есть критическая секция B. Второй поток выполняет код, содержащий критическую секцию B, внутри которой есть критическая секция A. Возможен такой порядок выполнения: первый поток входит в секцию А и не успевает войти в секцию В. Второй поток входит в секцию В и не может войти в секцию А, так как эта секция уже выполняется другим потоком. Первый поток не может продолжить выполнение, так как секция В уже выполняется другим потоком. Оба потока оказываются заблокированными.
Стандартные модули
Модуль GraphABC
Модуль GraphABC представляет собой простую графическую библиотеку и предназначен для создания несобытийных графических и анимационных программ в процедурном и частично в объектном стиле. Рисование осуществляется в специальном графическом окне , возможность рисования в нескольких окнах отсутствует. Кроме этого, в модуле GraphABC определены простейшие события мыши и клавиатуры, позволяющие создавать элементарные событийные приложения. Основная сфера использования модуля GraphABC - обучение.
Модуль GraphABC основан на графической библиотеке GDI+, но запоминает текущие перо, кисть и шрифт, что позволяет не передавать их в качестве параметров при вызове графических примитивов. К свойствам пера, кисти и шрифта можно получать доступ как в процедурном, так и в объектном стиле. Например, для доступа к цвету текущего пера используется процедура SetPenColor(c) и функция PenColor, а также свойство Pen.Color.
В модуле GraphABC можно управлять самим графическим окном и компонентом GraphABCControl, на котором осуществляется рисование. По умолчанию компонент GraphABCControl занимает всю клиентскую часть графического окна, однако, на графическое окно можно добавить элементы управления, уменьшив область, занимаемую графическим компонентом (например, так сделано в модулях Robot и Drawman).
Для работы с рисунками используется класс Picture, позволяющий рисовать на себе те же графические примитивы, что и на экране.
Режим блокировки рисования на экране (LockDrawing) позволяет осуществлять прорисовку лишь во внеэкранном буфере, после чего с помощью метода Redraw восстанавливать все графическое окно. Данный метод используется для ускорения анимации и создания анимации без мерцания.
В модуле GraphABC определен ряд констант, типов, процедур, функций и классов для рисования в графическом окне . Они подразделяются на следующие группы:
Графические примитивы
Функции для работы с цветом
Цветовые константы
Действия с пером: процедуры и функции
Действия с пером: объект Pen
Стиль пера
Действия с кистью: процедуры и функции
Действия с кистью: объект Brush
Стили кисти
Стили штриховки кисти
Действия со шрифтом: процедуры и функции
Действия со шрифтом: объект Font
Стили шрифта
Действия с рисунками: класс Picture
Действия с графическим окном: процедуры и функции
Действия с графическим окном: объект Window
Действия с системой координат: процедуры и функции
Действия с системой координат: объект Coordinate
Блокировка рисования и ускорение анимации
Режимы рисования
События GraphABC
Виртуальные коды клавиш
Перенаправление ввода-вывода
Типы и переменные модуля GraphABC
Color = System.Drawing.Color;
Тип цвета |
Point = System.Drawing.Point; Тип точки |
GraphABCException = class(Exception) end; Тип исключения GraphABC |
RedrawProc: procedure; Процедурная переменная перерисовки графического окна. Если равна nil, то используется стандартная перерисовка |
DrawInBuffer: boolean; Следует ли рисовать во внеэкранном буфере |
Графические примитивы
Графические примитивы представляют собой процедуры, осуществляющие рисование в графическом окне. Рисование осуществляется текущим пером (линии), текущей кистью (заливка замкнутых областей) и текущим шрифтом (вывод строк).
procedureSetPixel(x,y: integer; c: Color); Закрашивает пиксел с координатами (x,y) цветом c |
procedurePutPixel(x,y: integer; c: Color); Закрашивает пиксел с координатами (x,y) цветом c |
functionGetPixel(x,y: integer): Color; Возвращает цвет пиксела с координатами (x,y) |
procedureMoveTo(x,y: integer); Устанавливает текущую позицию рисования в точку (x,y) |
procedureLineTo(x,y: integer); Рисует отрезок от текущей позиции до точки (x,y). Текущая позиция переносится в точку (x,y) |
procedureLineTo(x,y: integer; c: Color); Рисует отрезок от текущей позиции до точки (x,y) цветом c. Текущая позиция переносится в точку (x,y) |
procedureLine(x1,y1,x2,y2: integer); Рисует отрезок от точки (x1,y1) до точки (x2,y2) |
procedureLine(x1,y1,x2,y2: integer; c: Color); Рисует отрезок от точки (x1,y1) до точки (x2,y2) цветом c |
procedureFillCircle(x,y,r: integer); Заполняет внутренность окружности с центром (x,y) и радиусом r |
procedureDrawCircle(x,y,r: integer); Рисует окружность с центром (x,y) и радиусом r |
procedureFillEllipse(x1,y1,x2,y2: integer); Заполняет внутренность эллипса, ограниченного прямоугольником, заданным координатами противоположных вершин (x1,y1) и (x2,y2) |
procedureDrawEllipse(x1,y1,x2,y2: integer); Рисует границу эллипса, ограниченного прямоугольником, заданным координатами противоположных вершин (x1,y1) и (x2,y2) |
procedureFillRectangle(x1,y1,x2,y2: integer); Заполняет внутренность прямоугольника, заданного координатами противоположных вершин (x1,y1) и (x2,y2) |
procedureFillRect(x1,y1,x2,y2: integer); Заполняет внутренность прямоугольника, заданного координатами противоположных вершин (x1,y1) и (x2,y2) |
procedureDrawRectangle(x1,y1,x2,y2: integer); Рисует границу прямоугольника, заданного координатами противоположных вершин (x1,y1) и (x2,y2) |
procedureFillRoundRect(x1,y1,x2,y2,w,h: integer); Заполняет внутренность прямоугольника со скругленными краями; (x1,y1) и (x2,y2) задают пару противоположных вершин, а w и h – ширину и высоту эллипса, используемого для скругления краев |
procedureDrawRoundRect(x1,y1,x2,y2,w,h: integer); Рисует границу прямоугольника со скругленными краями; (x1,y1) и (x2,y2) задают пару противоположных вершин, а w и h – ширину и высоту эллипса, используемого для скругления краев |
Интервал:
Закладка: