<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=217203&amp;view=findpost&amp;p=1818945</guid>
        <pubDate>Thu, 27 Dec 2007 11:03:02 +0000</pubDate>
        <title>Почему psDot не выдает желаемый результат</title>
        <link>https://forum.sources.ru/index.php?showtopic=217203&amp;view=findpost&amp;p=1818945</link>
        <description><![CDATA[Rose: Создай для этой цели геометрическое перо, у них возможностей побольше чем у косметических (VCL создает только устаревшие косметические перья, так что перо придется создавать самостоятельно, без помощи VCL).<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">procedure TForm1.FormPaint(Sender: TObject);</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;PenHandle: HPEN;</div><div class="code_line">&nbsp;&nbsp;BrushStyle: tagLOGBRUSH;</div><div class="code_line">&nbsp;&nbsp;NewPen: TPen;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;with Canvas do</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;BrushStyle.lbStyle:=BS_SOLID;</div><div class="code_line">&nbsp;&nbsp; &nbsp;BrushStyle.lbColor:=ColorToRGB(Pen.Color);</div><div class="code_line">&nbsp;&nbsp; &nbsp;BrushStyle.lbHatch:=0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;PenHandle:=ExtCreatePen(PS_GEOMETRIC or PS_DOT,Pen.Width,BrushStyle,0,nil);</div><div class="code_line">&nbsp;&nbsp; &nbsp;NewPen:=TPen.Create;</div><div class="code_line">&nbsp;&nbsp; &nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;NewPen.Handle:=PenHandle;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Canvas.Pen:=NewPen;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;MoveTo(0,100);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;LineTo(300,100);</div><div class="code_line">&nbsp;&nbsp; &nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;NewPen.Free;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script> <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2007-12-27T14:58:59+03:00">27.12.07, 11:58</time></span></span><br>
Ну раз уж этот ответ оказался здесь, то следует дополнить и поправиться ;)<br>
<br>
Сначала небольшое прелюдие: перья делятся на простые и расширенные. Расширенные - на косметические и геометрические.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Почему psDot не выдает желаемый результат</div></div><br>
В простых перьях (c помощью VCL можно создавать только <span class='tag-u'>простые</span> перья, а не <span class='tag-u'>косметические</span>, как я сказал выше. Отличий очень мало, но они есть) длины штрихов измеряются не в логических единицах (пиксели по умолчанию) а в т.н. Style Units, которые определяются контекстом вывода. Судя по всему, 1 такой юнит равен трем пикселам, именно поэтому DOT-линия на самом деле состоит из коротеньких штришков.<br>
В расширенных геометрических перьях длины штрихов измеряются в логических единицах, т.е. 1 пиксель для режима MM_TEXT. Именно поэтому DOT-перо действительно рисует точечками.]]></description>
        <author>Rose</author>
        <category>Графика, звук, анимация, игры</category>
      </item>
	
      </channel>
      </rss>
	