Содержание
  ДОМОЙ
  НОВОСТИ  
  IT АКАДЕМИЯ
  WAP-ВЕРСИЯ
  ФОРУМ
  БЕЗОПАСНОСТЬ
  ПРОГРАММИРОВАНИЕ
  ИНСТРУМЕНТ ВЕБМАСТЕРА
  ВСЁ ДЛЯ КПК
  СТАТЬИ NEW
  СОФТ
  ВИДЕО
  X-INFO
  ПРОКСИ ЛИСТ
  IT МУЗЫКА
  АНЕКДОТЫ
  ССЫЛКИ
  ТЕХ. ПОДДЕРЖКА
  ПРАВООБЛАДАТЕЛЯМ
  О НАС

 

Ваш IP

54.196.89.247

Человек на сайте На сайте: 550 человек(а)

Здесь могла бы
быть Ваша
РЕКЛАМА




функции рисования в win api
 



Итак, в статье я опишу функции рисования в win api. Их довольно много, поэтому рассмотрим основные: Rectangle(DC:HDC, x1:integer, y1:integer, x2:integer, y2:integer); - рисует прямоугольник на канве DC, с координатами левого верхнего угла x1,y1 и правого нижнего в x2,y2. Вот поясняющая картинка.

Ellipse(DC:HDC, x1:integer, y1:integer, x2:integer, y2:integer); - рисует овал, с теме же параметрами, что и прямоугольник, вот поясняющая картинка.

MoveToEx(DC:HDC, p2:integer, p3:integer, p4:PPoint); - перемещает указатель на канве DC в координаты p2,p3, последний параметр нам не нужен, поэтому устанавливаем его в nil. Функция используется при рисовании линией LineTo.
LineTo(DC:HDC, x:integer, y:integer); - рисует линию из текущей позиции указателя, в точку с координатами x,y. Указатель перемещается функцией MoveToEx() (см.выше). Вот картинка, примерно отображающая использование LineTo(), MoveToEx().

Чтобы получить такую картинку в первом случае был такой код:

MoveToEx(Image1.Canvas.Handle, 10, 10, nil);
LineTo(Image1.Canvas.Handle, 70, 100);
MoveToEx(Image1.Canvas.Handle, 10, 10, nil);
LineTo(Image1.Canvas.Handle, 100, 100);

А во втором случае такой:

MoveToEx(Image1.Canvas.Handle, 10, 10, nil);
LineTo(Image1.Canvas.Handle, 70, 100);
LineTo(Image1.Canvas.Handle, 100, 100);

DrawIcon(DC:HDC, x:integer, y:integer, hIcon:HICON); - рисует иконку на поверхности DC, в координате x,y, сама иконка передаётся в последнем параметре, как HICON.
DrawFocusRect(DC:HDC, const lprc:TRECT); - рисует прямоугольник фокуса (пунктирная линия, вроде той которая используется при выделении чего-либо). Её передаются всего два параметра - канва, на которой нужно вывести рисунок, и TRect - прямоугольник.
DrawText(DC:HDC, lpString:PAnsiChar, nCount:integer, lpRect:TRect, uFormat:cardinal); - выводит текст lpString, в прямоугольнике lpRect.
SetPixel(DC:HDC, x:integer, y:integer, Color:Cardinal); - закрашивает пиксел в координате x,y цветом color.
GetPixel(DC:HDC, x:integer, y:integer) - возвращает цвет пиксела в координате x,y.
Чтобы было понятней, приведу пример всех описанных выше функций, плюс ещё несколько фишек - в примере, мы будем вырисовывать всё на десктопе, и главное - изменит аттрибуты канвы, такие как цвет кисти (HBRUSH) и цвет карандаша (HPEN), тоесть например если на десктопе вывести прямоугольник, с помощью Rectangle(), то внешняя линия будет чёрной, а цвет заливки - белой, это параметры по умолчанию, я покажу как изменять толщину, цвет и другие параметры заливки и линии. Итак вот пример:


program DeskColorDraw;

uses
Windows,
ShellApi; // здесь нужна только для извлечения иконки

var
lpen : LOGPEN;
lbrush : LOGBRUSH;
pen : HPEN;
brush : HBRUSH;
dc : HDC;
pnt: TPoint;
rct : TRect;
ico : HICON;



begin
ico := ExtractIcon(0, 'icon.ico', 0);

pnt.X := 10;
pnt.Y := 10;

rct.Top := 300;
rct.Left := 300;
rct.Right := 400;
rct.Bottom := 400;

lpen.lopnStyle := PS_STYLE_MASK;
lpen.lopnWidth := pnt;
lpen.lopnColor := 1000;

lbrush.lbStyle := windows.BS_SOLID;
lbrush.lbColor := 65535;
lbrush.lbHatch := 0;

dc := GetDC(0);
pen := windows.CreatePenIndirect(lpen);
brush := windows.CreateBrushIndirect(lbrush);


SelectObject(dc, pen);
SelectObject(dc, brush);

MoveToEx(dc, 50, 50, nil);
LineTo(dc, 300, 50);
MoveToEx(dc, 50, 70, nil);
LineTo(dc, 300, 70);

DrawFocusRect(dc, rct);

DrawText(dc, 'text', 4, rct, 0);

Rectangle(dc, 200,200,300,300);
Ellipse(dc, 100,100,200,200);

SetPixel(dc, 10, 10, 255); // 255 - код красного цвета

//color := GetPixel(dc, 30, 30); // здесь color - переменная типа cardinal

DrawIcon(dc, 200, 200, ico);

DeleteObject(SelectObject(dc, brush));
DeleteObject(SelectObject(dc, pen));

end.



Исходник

SLAyer

Другие статьи

По всем вопросам и предложениям по сайту пишите на info@comp-info.ru
 


Содержание
  ДОМОЙ
  НОВОСТИ  
  IT АКАДЕМИЯ
  WAP-ВЕРСИЯ
  ФОРУМ
  БЕЗОПАСНОСТЬ
  ПРОГРАММИРОВАНИЕ
  ИНСТРУМЕНТ ВЕБМАСТЕРА
  ВСЁ ДЛЯ КПК
  СТАТЬИ NEW
  СОФТ
  ВИДЕО
  X-INFO
  ПРОКСИ ЛИСТ
  IT МУЗЫКА
  АНЕКДОТЫ
  ССЫЛКИ
  ТЕХ. ПОДДЕРЖКА
  ПРАВООБЛАДАТЕЛЯМ
  О НАС

 
Поиск по сайту
Утилиты

  Сниффер
  Лог сниффера
  MD5 и Base64
  Декодирование MD5 NEW
 Перекодировщик
  Проверить прокси
  Проверка анонимности
  Генерация пароля
  Скрипт определения IP
  Поиск информации
   Проверить IP (Whois)
   Узнать скорость закачки
   Добавить свой сайт в поисковые системы>
   Подсветка php-кода

ПОЛЕЗНАЯ ИНФОРМАЦИЯ:
  Список национальных доменных имен
  Компьютерные термины
  Смайлики
   Аналоги Win-программ в Linux
   Коды ответа HTTP сервера
   Записки невесты программиста

Здесь могла бы
быть Ваша
РЕКЛАМА





Права на содержащиеся на сайте материалы принадлежат авторам материалов и владельцам проекта.
Copyright Комп-Инфо.ру © 2005