На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Rouse_, jack128, Krid
  
    > Почему psDot не выдает желаемый результат
      Создай для этой цели геометрическое перо, у них возможностей побольше чем у косметических (VCL создает только устаревшие косметические перья, так что перо придется создавать самостоятельно, без помощи VCL).

      ExpandedWrap disabled
        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-перо действительно рисует точечками.
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0211 ]   [ 16 queries used ]   [ Generated: 29.03.24, 07:02 GMT ]