Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[98.84.18.52] |
|
Сообщ.
#1
,
|
|
|
Создай для этой цели геометрическое перо, у них возможностей побольше чем у косметических (VCL создает только устаревшие косметические перья, так что перо придется создавать самостоятельно, без помощи VCL).
procedure TForm1.FormPaint(Sender: TObject); var PenHandle: HPEN; BrushStyle: tagLOGBRUSH; NewPen: TPen; begin with Canvas do begin BrushStyle.lbStyle:=BS_SOLID; BrushStyle.lbColor:=ColorToRGB(Pen.Color); BrushStyle.lbHatch:=0; PenHandle:=ExtCreatePen(PS_GEOMETRIC or PS_DOT,Pen.Width,BrushStyle,0,nil); NewPen:=TPen.Create; try NewPen.Handle:=PenHandle; Canvas.Pen:=NewPen; MoveTo(0,100); LineTo(300,100); finally NewPen.Free; end; end; end; Добавлено Ну раз уж этот ответ оказался здесь, то следует дополнить и поправиться Сначала небольшое прелюдие: перья делятся на простые и расширенные. Расширенные - на косметические и геометрические. Цитата Почему psDot не выдает желаемый результат В простых перьях (c помощью VCL можно создавать только простые перья, а не косметические, как я сказал выше. Отличий очень мало, но они есть) длины штрихов измеряются не в логических единицах (пиксели по умолчанию) а в т.н. Style Units, которые определяются контекстом вывода. Судя по всему, 1 такой юнит равен трем пикселам, именно поэтому DOT-линия на самом деле состоит из коротеньких штришков. В расширенных геометрических перьях длины штрихов измеряются в логических единицах, т.е. 1 пиксель для режима MM_TEXT. Именно поэтому DOT-перо действительно рисует точечками. |