Графика в Delphi - примеры задач на построение графиков, а также компоненты для графики

Процедура выводит на Canvas семисегментный индикатор, позволяя управлять включенными сегментами

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Процедура выводит на Canvas семисегментный индикатор,
позволяя управлять включенными сегментами

Процедура выводит на Canvas индикатор семисегментного кода
Вход:
SegStr - Строка содержащая символы горящих сегментов(используемые символы ABCDEFGH)
x,y - координаты верхнего левого угла вывода индикатора
Scale - масштаб индикатора от 1 и выше (множитель)
Hndl - Handle Canvas на который выводится изображение

Зависимости: Стандартные
Автор: Pavel Manzharov, pavel_man@hotmail.com, ICQ:4838921, Москва
Copyright: Pavel Manzharov
Дата: 25 февраля 2003 г.
***************************************************** }

{Процедура выводит на Canvas индикатор семисегментного кода
Вход:
SegStr - Строка содержащая символы горящих сегментов
(используемые символы ABCDEFGH)
x,y - координаты верхнего левого угла вывода индикатора
Scale - масштаб индикатора от 1 и выше (множитель)
Hndl - Handle Canvas на который выводится изображение}

procedure Display7Seg(SegStr: string; x, y: integer; Scale: extended; hndl:
hdc);
const
// Цвет горящих сегментов
ColorOn: Tcolor = clBlue;
// Цвет погашенных сенментов
ColorOff: TColor = clltGray;
var
// Canvas на который выводится изображение
Canvas1: TCanvas;
// Координаты выводимого сегмента
x1, x2, y1, y2: integer;
begin
// Создаем Canvas
Canvas1 := TCanvas.Create;
// Проверяем масштаб и если он меньше 1 присваиваем ему 1
if Scale < 1 then
scale := 1;
// Укажем что вывод осуществляется на Canvas переданный в параметрах
Canvas1.Handle := Hndl;
// Установим толщину линий сегментов равной масштабу
Canvas1.Pen.Width := Trunc(Scale);
// Пересчитаем координаты вывода с учетом масштаба для всех сегментов
{A}
x1 := Trunc(x + 1 * scale);
x2 := Trunc(x1 + 5 * scale);
y1 := y;
y2 := y;
if StrPos(Pchar(SegStr), 'A') <> nil then
Canvas1.Pen.Color := ColorOn
else
Canvas1.Pen.Color := ColorOff;
Canvas1.MoveTo(x1, y1);
Canvas1.LineTo(x2, y2);
{G}
y1 := Trunc(y + 6 * Scale);
y2 := y1;
if StrPos(Pchar(SegStr), ‘G’) <> nil then
Canvas1.Pen.Color := ColorOn
else
Canvas1.Pen.Color := ColorOff;
Canvas1.MoveTo(x1, y1);
Canvas1.LineTo(x2, y2);
{D}
y1 := Trunc(y + 12 * Scale);
y2 := y1;
if StrPos(Pchar(SegStr), ‘D’) <> nil then
Canvas1.Pen.Color := ColorOn
else
Canvas1.Pen.Color := ColorOff;
Canvas1.MoveTo(x1, y1);
Canvas1.LineTo(x2, y2);
{H}
x1 := Trunc(x + 8 * Scale);
x2 := x1;
if StrPos(Pchar(SegStr), ‘H’) <> nil then
Canvas1.Pen.Color := ColorOn
else
Canvas1.Pen.Color := ColorOff;
Canvas1.MoveTo(x1, y1);
Canvas1.LineTo(x2, y2);
{F}
x1 := x;
x2 := x;
y1 := Trunc(y + 1 * scale);
y2 := Trunc(y + 5 * scale);
if StrPos(Pchar(SegStr), ‘F’) <> nil then
Canvas1.Pen.Color := ColorOn
else
Canvas1.Pen.Color := ColorOff;
Canvas1.MoveTo(x1, y1);
Canvas1.LineTo(x2, y2);
{E}
y1 := Trunc(y + 7 * scale);
y2 := Trunc(y + 11 * scale);
if StrPos(Pchar(SegStr), ‘E’) <> nil then
Canvas1.Pen.Color := ColorOn
else
Canvas1.Pen.Color := ColorOff;
Canvas1.MoveTo(x1, y1);
Canvas1.LineTo(x2, y2);
{C}
x1 := Trunc(x + 7 * scale);
x2 := x1;
if StrPos(Pchar(SegStr), ‘C’) <> nil then
Canvas1.Pen.Color := ColorOn
else
Canvas1.Pen.Color := ColorOff;
Canvas1.MoveTo(x1, y1);
Canvas1.LineTo(x2, y2);
{B}
y1 := Trunc(y + 1 * scale);
y2 := Trunc(y + 5 * scale);
if StrPos(Pchar(SegStr), ‘B’) <> nil then
Canvas1.Pen.Color := ColorOn
else
Canvas1.Pen.Color := ColorOff;
Canvas1.MoveTo(x1, y1);
Canvas1.LineTo(x2, y2);
// После вывода последнего сегмента освободим Canvas
Canvas1.Free;
end;

Пример использования:

Hndl := Form1.Canvas.Handle;
Display7Seg(’ABCDE’,100,20,8,Hndl);

Powered WP Ъ скачать delphi, delphi 7, скачать delphi 7, delphi файлы, delphi, компоненты, delphi 2009, delphi программы, delphi бесплатно, delphi скачать, бесплатно работа delphi, delphi создание, delphi строки, программирования delphi, borland delphi, delphi формы