Примеры Delphi и C# из жизни

Примеры программирования на языках Delphi, C#

 




Где купить хороший матрас? Рекомендуем купить матрас хорошего качества от Консул.; Проблемы со жизнью? Покупаете беспобные матрасы Консул прямо с производства!; Восстановление файлов; Данные о турах. Отзывы о турах в шарм эль шейх. Узнайте больше о туре.; Студия CLEX.RU - создание web сайта - оперативно и надежно

Как нарисовать линию толщиной 1 пиксел | Delphi

Библиотека GDI+ является независимой от разрешения полотна рисования. Это означает, что вы получите линию одинаковой ширины как на экране компьютера с разрешением 72 точки на дюйм, так и на листе бумаги, напечатанном на принтере с разрешением 600 точек на дюйм.

Поэтому, графический карандаш (TGPPen), которым рисуется линия, принимает в качестве ширины рисования значение с плавающей точкой. А реальная ширина расчитывается исходя из установленного значения TGPGraphics.PageUnit.

graphics.SetPageUnit(UnitMillimeter);
{
 UnitWorld, // 0 -- "мировые координаты>, для "отвлеченных> расчетов без конкретной привязки к устройству вывода
 UnitDisplay, // 1 -- используется при различных трансформациях
 UnitPixel, // 2 -- каждое значение = 1 пикселю устройства вывода.
 UnitPoint, // 3 -- каждое значение = 1/72 дюйма (единица счета для принтера).
 UnitInch, // 4 -- каждое значение = 1 дюйм.
 UnitDocument, // 5 -- каждое значение = 1/300 дюйма.
 UnitMillimeter // 6 -- каждое значение = 1 миллиметру.
}


Таким образом, линия с заданной толщиной 1 не обязательно будет линией толщиной в 1 пиксел.

Если же необходимо рисовать линию толщиной 1 пиксел вне зависимости от установок, необходимо при создании карандаша передавать как значение толщины -1

var
 graphics : TGPGraphics;
 pen: TGPPen;
begin
 graphics := TGPGraphics.Create(DC);
 pen := TGPPen.Create(MakeColor(255, 0, 0, 255), -1);
 graphics.DrawLine(pen, 0, 0, 200, 100);
 graphics.Free;
 pen.Free;
end;