Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Приложение.
Текст программы.
Program MyPaint;
uses WinProcs, WinTypes;
{$R 1.RES}
{Глобальные переменные}
const
szAppName = 'My Paint';
id_Line = 1;
id_Ellipse = 2;
id_Rectangle = 3;
id_RoundRect = 4;
cm_Exit = 105;
cm_Line = 201;
cm_Ellipse = 202;
cm_Rectangle = 203;
cm_RoundRect = 204;
cm_Thin = 301;
cm_Regular = 302;
cm_Thick = 303;
cm_Solid = 313;
cm_DASH = 314;
cm_DashDot = 310;
cm_Dot = 312;
cm_Red = 304;
cm_Green = 305;
cm_Black = 306;
cm_Yellow = 307;
cm_PaleBlue = 308;
cm_Magenta = 309;
cm_Blue = 311;
{ Обозначает фигуру которую пользователь рисует }
{ Фигура по умолчанию -линия}
CurrentShape : Integer = id_Line;
{ Обозначает размер ручки. Ширина по умолчанию-средняя. }
PenWidth : Integer = 3;
{ Обозначает цвет ручки. Цвет по умолчанию- чёрный. }
PenColor:TColorRef=$00000000;
{Обозначает стиль ручки. Стиль по умолчанию-сплошная}
PenStyle:Word=ps_Solid;
{Поля данной записи определяют}
{свойства фигуры которую рисует пользователь}
type
Shape = record
Points: Trect;
PenWidth: Integer;
theShape: Integer;
PenColor: TcolorRef;
PenStyle: Word;
{ Используется чтобы определить направление линии. Если }
{ slope > 0 тогда линия рисуется слево-направо и сверху-вниз. Иначе }
{ слево-направо и снизу-вверх.}
Slope: Integer;
end;
const
nPoints = 100;
{ Определяет порядковый номер фигуры которую рисует пользователь }
CurrentPoint : Integer = -1;
var
{ Массив содержащий фигуры нарисованные пользователем. }
thisShape: array[0..nPoints - 1] of Shape;
function Min(a, b: LongInt): LongInt;
begin
if a < b then Min := a
else Min := b;
end;
function Max(a, b: LongInt): LongInt;
begin
if a > b then Max := a
else Max := b;
end;
{procedure DrawMyShape
Рисует фигуру с заданными параметрами PenWidth
,PenColor и PenStyle в прямоугольнике ограниченном x,y,x2,y2.
Параметр Slope показывает с каким наклоном рисуется линия, с положительным или отрицательным.}
procedure DrawMyShape(HandleDC: HDC; x, y, x2, y2, Shape,
PenWidth: Integer; PenColor: TColorRef; Slope: Integer;PenStyle:Word);
var
SaveObject: THandle;
begin
{ Создать надлежащую ручку для данной фигуры. Предварительно }
{ сохранив выбранный объект в DC. }
SaveObject := SelectObject(HandleDC, CreatePen(PenStyle,
PenWidth, PenColor));
{Устанавливает логический объект для DC. В любой момент времени}
{может быть установлен только 1 объект и должен быть удалён если не используется}
case Shape of {Определение способа рисования фигур}
id_Line:
{Прямоугольники содержащие позиции фигур должны сохраняться как координаты-}
{ верхняя-левая и нижняя правая. Чтобы нарисовать линию из}
{ верхнего-правого в нижний-левый угол,линия должна иметь}
{ отрицательный наклон.}
if Slope > 0 then
begin
MoveTo(HandleDC, x, y);
{Перемещает текущую позицию рисования в точку с данными координатами}
LineTo(HandleDC, x2, y2);
{Рисует линию из текущей позиции в данную точку}
end
else
begin
MoveTo(HandleDC, x2, y);
LineTo(HandleDC, x, y2);
end;
id_Ellipse:
Ellipse(HandleDC, x, y, x2, y2);
{Рисует эллипс ограниченный прямоугольником с координатами углов}
{(x,y)-верхний-левый,(x2,y2)-нижний-правый}
id_Rectangle:
Rectangle(HandleDC, x, y, x2, y2);
{Рисует прямоугольник с координатами углов}
{(x,y)-верхний-левый,(x2,y2)-нижний-правый}
id_RoundRect:
RoundRect(HandleDC, x, y, x2, y2, Round(((x2-x)/x)-10),Round((( y2+y)/y))-10);
{Рисует прямоугольник со скругленными углами. Скругления углов определены как четверти эллипса.}
{(x,y)-верхний-левый, (x2,y2)-нижний-правый, углы скруглены четвертями эллипса }
{ширинойRound(((x2-x)/x)-10) и высотойRound((( y2+y)/y))-10) .}
end;
{ Удаляет установленный в настоящее время объект (the pen) из памяти }
{ и освобождает место для дальнейшей установки выбранного вами объекта }
DeleteObject(SelectObject(HandleDC, SaveObject));
end;
{procedure My_Paint
Обрабатывает сообщение wm_Paint . wm_Paint посылается тогда когда вызывается UpdateWindow или если око было перемещено, поменяло размеры или было перекрыто другим окном.}
procedure My_Paint(HWindow: HWnd);
var
i: Integer;
HandleDC, hMemDC: HDC;
{Определяет тип управления для контекст устройства}
theRect, DestRect: TRect;
{Запись TRect определяет прямоугольную }
{область заданную координатами вершин}
theBitmap: HBitMap;
ps: TPaintStruct;{Содержит информацию для рисования}
begin
HandleDC := BeginPaint(HWindow, ps);
{Готовит окно к рисованию, заполняя поля записи ps}
if CurrentPoint >= 0 then {Если пользователь уже рисовал фигуры то}
Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.