<?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=443691&amp;view=findpost&amp;p=3902093</guid>
        <pubDate>Mon, 25 Mar 2024 14:58:16 +0000</pubDate>
        <title>Как сделать линию пунктиром у Rectangle в Delphi?</title>
        <link>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3902093</link>
        <description><![CDATA[Katerina1993: А вот нашелся и аналог transform, который я так искала, это ModifyWorldTransform. Последний параметр нужно обязательно передавать MWT_LEFTMULTIPLY.<br>
<br>
Пример использования на dephi 7.<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">&nbsp;&nbsp;M.eM11 := 1;</div><div class="code_line">&nbsp;&nbsp; M.eM12 := 0;</div><div class="code_line">&nbsp;&nbsp; M.eM21 := 0;</div><div class="code_line">&nbsp;&nbsp; M.eM22 := 1;</div><div class="code_line">&nbsp;&nbsp; M.eDx := 0;</div><div class="code_line">&nbsp;&nbsp; M.eDy := 100;</div><div class="code_line">&nbsp;&nbsp; ModifyWorldTransform(hDc, M, MWT_LEFTMULTIPLY);</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
Результат.<br>
<span class="b-attach" data-size="8205" data-hits="85" data-attach-id="65652" data-attach-post-id="0">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=0&amp;attach_id=65652' title='Скачать файл' target='_blank'>img4.jpg</a> (, : 85)
		</span><br>
Пример использования на html 5.<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
a = Math.PI/6;<br>
  <br>
   eM11 = Math.cos(a);<br>
   eM12 = Math.sin(a);<br>
   eM21 = -Math.sin(a);<br>
   eM22 = Math.cos(a);<br>
   eDx = 0;<br>
   eDy = 0;<br>
  <br>
  ctx1.setTransform(eM11,eM12,eM21,eM22,eDx,eDy);<br>
  ctx1.transform(1, 0, 0, 1, 0, 100);<br>
  ctx1.drawImage(img,0,0);<br>
</div></div><br>
Результат.<br>
<span class="b-attach" data-size="12996" data-hits="83" data-attach-id="65653" data-attach-post-id="0">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=0&amp;attach_id=65653' title='Скачать файл' target='_blank'>img5.jpg</a> (, : 83)
		</span> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-03-25T18:01:49+03:00">25.03.24, 15:01</time></span></span><br>
Обе картинки одинаково выглядывают из угла что на Delphi, что на HTML5. <br>
<br>
Вывод: Функция ModifyWorldTransform(Delphi) и Transform(HTML5) идентичны.]]></description>
        <author>Katerina1993</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3902092</guid>
        <pubDate>Mon, 25 Mar 2024 14:36:36 +0000</pubDate>
        <title>Как сделать линию пунктиром у Rectangle в Delphi?</title>
        <link>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3902092</link>
        <description><![CDATA[Katerina1993: Я убедилась, что SetWorldTransform это та функция, которая является аналогом setTransform в html5. Запустила два примера.<br>
1. Delphi.<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">&nbsp;bmp1 := TBitmap.Create;</div><div class="code_line">&nbsp;&nbsp;bmp1.LoadFromFile(&#39;.\bitmap\main.bmp&#39;); &nbsp;// chargement du niveau</div><div class="code_line">&nbsp;&nbsp;Form1.Image1.Canvas.Brush.Color:=clWhite;</div><div class="code_line">&nbsp;&nbsp;Form1.Image1.Canvas.FillRect(Form1.Image1.ClientRect);</div><div class="code_line">&nbsp;&nbsp;Image1.Canvas.Draw(0,0,bmp1);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; hDc := Image2.Canvas.Handle;</div><div class="code_line">&nbsp;&nbsp; SetGraphicsMode(hDc, GM_ADVANCED);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; a := PI/6;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; M.eM11 := Cos(a);</div><div class="code_line">&nbsp;&nbsp; M.eM12 := Sin(a);</div><div class="code_line">&nbsp;&nbsp; M.eM21 := -Sin(a);</div><div class="code_line">&nbsp;&nbsp; M.eM22 := Cos(a);</div><div class="code_line">&nbsp;&nbsp; M.eDx := 0;</div><div class="code_line">&nbsp;&nbsp; M.eDy := 0;</div><div class="code_line">&nbsp;&nbsp; SetWorldTransform(hDc, M);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; Image2.Canvas.Draw(0, 0, bmp1);</div></ol></div></div></div></div><br>
Результат:<br>
<br>
<span class="b-attach" data-size="7801" data-hits="106" data-attach-id="65650" data-attach-post-id="0">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=0&amp;attach_id=65650' title='Скачать файл' target='_blank'>img2.jpg</a> (, : 106)
		</span><br>
<br>
2. HTML5.<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
var a,eM11,eM12,eM21,eM22,eDx,eDy;<br>
<br>
var c=document.getElementById(&quot;drawingCanvas&quot;);<br>
var ctx=c.getContext(&quot;2d&quot;);<br>
var c=document.getElementById(&quot;drawingCanvas1&quot;);<br>
var ctx1=c.getContext(&quot;2d&quot;);<br>
<br>
const img = new Image()<br>
img.src = &#39;main.jpg&#39;;<br>
 img.onload = function()<br>
 { <br>
  ctx.drawImage(img,0,0);<br>
  <br>
  <br>
  <br>
  <br>
  a = Math.PI/6;<br>
  <br>
   eM11 = Math.cos(a);<br>
   eM12 = Math.sin(a);<br>
   eM21 = -Math.sin(a);<br>
   eM22 = Math.cos(a);<br>
   eDx = 0;<br>
   eDy = 0;<br>
  <br>
  ctx1.setTransform(eM11,eM12,eM21,eM22,eDx,eDy);<br>
  ctx1.drawImage(img,0,0);<br>
 } <br>
</div></div><br>
Результат (c помощью стилей я изменила задний фон, чтобы соотвествовал Delphi).<br>
<span class="b-attach" data-size="7943" data-hits="92" data-attach-id="65651" data-attach-post-id="0">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=0&amp;attach_id=65651' title='Скачать файл' target='_blank'>img3.jpg</a> (, : 92)
		</span>]]></description>
        <author>Katerina1993</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3902090</guid>
        <pubDate>Mon, 25 Mar 2024 14:10:33 +0000</pubDate>
        <title>Как сделать линию пунктиром у Rectangle в Delphi?</title>
        <link>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3902090</link>
        <description><![CDATA[Katerina1993: Разобралась как работает SetWorldTransform.<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">unit Unit1;</div><div class="code_line">&nbsp;</div><div class="code_line">interface</div><div class="code_line">&nbsp;</div><div class="code_line">uses</div><div class="code_line">&nbsp;&nbsp;Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,</div><div class="code_line">&nbsp;&nbsp;Dialogs, ExtCtrls;</div><div class="code_line">&nbsp;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;TForm1 = class(TForm)</div><div class="code_line">&nbsp;&nbsp; &nbsp;Image1: TImage;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Image2: TImage;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure FormCreate(Sender: TObject);</div><div class="code_line">&nbsp;&nbsp;private</div><div class="code_line">&nbsp;&nbsp; &nbsp;{ Private declarations }</div><div class="code_line">&nbsp;&nbsp;public</div><div class="code_line">&nbsp;&nbsp; &nbsp;{ Public declarations }</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;Form1: TForm1;</div><div class="code_line">&nbsp;&nbsp;bmp1: TBitmap;</div><div class="code_line">implementation</div><div class="code_line">&nbsp;</div><div class="code_line">{$R *.dfm}</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.FormCreate(Sender: TObject);</div><div class="code_line">var HDC:THandle;</div><div class="code_line">M:TXFORM;</div><div class="code_line">a:Double;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;bmp1 := TBitmap.Create;</div><div class="code_line">&nbsp;&nbsp;bmp1.LoadFromFile(&#39;.\bitmap\main.bmp&#39;); &nbsp;// chargement du niveau</div><div class="code_line">&nbsp;&nbsp;Form1.Image1.Canvas.Brush.Color:=clWhite;</div><div class="code_line">&nbsp;&nbsp;Form1.Image1.Canvas.FillRect(Form1.Image1.ClientRect);</div><div class="code_line">&nbsp;&nbsp;Image1.Canvas.Draw(0,0,bmp1);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; hDc := Image2.Canvas.Handle;</div><div class="code_line">&nbsp;&nbsp; SetGraphicsMode(hDc, GM_ADVANCED);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; M.eM11 := 1;</div><div class="code_line">&nbsp;&nbsp; M.eM12 := 0;</div><div class="code_line">&nbsp;&nbsp; M.eM21 := 0;</div><div class="code_line">&nbsp;&nbsp; M.eM22 := 1;</div><div class="code_line">&nbsp;&nbsp; M.eDx := -bmp1.Width div 2;</div><div class="code_line">&nbsp;&nbsp; M.eDy := -bmp1.Height div 2;</div><div class="code_line">&nbsp;&nbsp; SetWorldTransform(hDc, M);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; a := PI/6;</div><div class="code_line">&nbsp;&nbsp; fillChar(M, sizeOf(M), 0);</div><div class="code_line">&nbsp;&nbsp; M.eM11 := Cos(a);</div><div class="code_line">&nbsp;&nbsp; M.eM12 := Sin(a);</div><div class="code_line">&nbsp;&nbsp; M.eM21 := -Sin(a);</div><div class="code_line">&nbsp;&nbsp; M.eM22 := Cos(a);</div><div class="code_line">&nbsp;&nbsp; M.eDx := 0;</div><div class="code_line">&nbsp;&nbsp; M.eDy := 0;</div><div class="code_line">&nbsp;&nbsp; ModifyWorldTransform(hDc, M, MWT_RIGHTMULTIPLY);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; M.eM11 := 1;</div><div class="code_line">&nbsp;&nbsp; M.eM12 := 0;</div><div class="code_line">&nbsp;&nbsp; M.eM21 := 0;</div><div class="code_line">&nbsp;&nbsp; M.eM22 := 1;</div><div class="code_line">&nbsp;&nbsp; M.eDx := bmp1.Width div 2;</div><div class="code_line">&nbsp;&nbsp; M.eDy := bmp1.Height div 2;</div><div class="code_line">&nbsp;&nbsp; ModifyWorldTransform(hDc, M, MWT_RIGHTMULTIPLY);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; Image2.Canvas.Draw(0, 0, bmp1);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">end.</div></ol></div></div></div></div><br>
Результат:<br>
<br>
<span class="b-attach" data-size="23836" data-hits="98" data-attach-id="65649" data-attach-post-id="0">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=0&amp;attach_id=65649' title='Скачать файл' target='_blank'>img1.jpg</a> (, : 98)
		</span>]]></description>
        <author>Katerina1993</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3902061</guid>
        <pubDate>Mon, 25 Mar 2024 02:55:46 +0000</pubDate>
        <title>Как сделать линию пунктиром у Rectangle в Delphi?</title>
        <link>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3902061</link>
        <description><![CDATA[MBo: SetWorldTransform]]></description>
        <author>MBo</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3902057</guid>
        <pubDate>Sun, 24 Mar 2024 02:40:08 +0000</pubDate>
        <title>Как сделать линию пунктиром у Rectangle в Delphi?</title>
        <link>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3902057</link>
        <description><![CDATA[Katerina1993: Инетересно, а аналог setTransform в delphi 7 есть?<br>
<br>
Вот синтаксис, в html canvas.<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
ctx.setTransform(m11, m12, m21, m22, dx, dy);<br>
</div></div><br>
А вот пояснение c habr<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
dx,  dy — повторяют метод translate, смещая картинку на соответствующие значения.<br>
m11, m22 — повторяют метод scale, изменяя размер отрысовываемых пикселей.<br>
m12, m21 — более интересные. Каждый пиксель (x,y) смещается на y*m21 пикселей вправо и на x*m12 пикселей вниз.Это значит, что при m21=1 каждая следующая строчка будет смещена на 1 пиксель вправо, относительно предыдущей.<br>
</div></div>]]></description>
        <author>Katerina1993</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3902056</guid>
        <pubDate>Sat, 23 Mar 2024 20:59:22 +0000</pubDate>
        <title>Как сделать линию пунктиром у Rectangle в Delphi?</title>
        <link>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3902056</link>
        <description><![CDATA[macomics: Процедура Mixer использует объявленную внутри структуру (TRGB) и указатель на данные этой структуры (pRGB) для обращения к данным в объекте Bitmap<br>Два вложенных цикла: внешний по строкам и внутренний по столбцам. Они проходят по всем пикселям Bitmap и изменяют дынные в памяти по указателю.<br>Во внешнем цикле получается указатель на пиксели строки изображения и сохраняется в переменной Dest (типа pRGB).<br>В внутреннем цикле стоит блок with, чтобы сократить в его операторах доступ к полям структуры TRGB, на которую указывает Dest. После with указатель Dest увеличивается на 3 (байта - длину структуры TRGB).<br>В блоке with последовательно по отдельности к каждому цветовому компоненту применяется функция смешивания значений: (X / 100 * Value + DX / 100 * (255 - Value)) / 2. По сути Value и 255 - Value это обратные величины: если одна максимальная, то другая минимальная. X / 100 и DX / 100 это компоненты цвета текущего пикселя и заданного в параметрах цвета.<br><br>А вот код в методе FormCreate не имеет смысла кроме первых двух строк. Рисовать на экране до его обновления нельзя (точнее все эти изменения будут отброшены и стерты при OnErase и OnPaint).]]></description>
        <author>macomics</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3902055</guid>
        <pubDate>Sat, 23 Mar 2024 20:30:22 +0000</pubDate>
        <title>Как сделать линию пунктиром у Rectangle в Delphi?</title>
        <link>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3902055</link>
        <description><![CDATA[Katerina1993: Попробовала заменить текстуры на Delphi 7, вот пример на html5.<br>
<a class='tag-url' href='https://1olgastorm.github.io/Example2/grafic.html' target='_blank'>https://1olgastorm.github.io/Example2/grafic.html</a><br>
<span class="b-attach" data-size="6994" data-hits="70" data-attach-id="65645" data-attach-post-id="0">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=0&amp;attach_id=65645' title='Скачать файл' target='_blank'>img1.jpg</a> (, : 70)
		</span><br>
Попытка на Delphi 7. Этот пример взяла с другого сайта поэтому не совсем понимаю как работает код. Но перекрасить картинку черный в красный, а белый в зеленный цвет не получается.<br>
<br>
<span class="b-attach" data-size="11857" data-hits="91" data-attach-id="65646" data-attach-post-id="0">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=0&amp;attach_id=65646' title='Скачать файл' target='_blank'>img2.jpg</a> (, : 91)
		</span><br>
<br>
Код:<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">&nbsp;&nbsp;bmp1,bmp2 : TBitmap;</div><div class="code_line">....</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.FormCreate(Sender: TObject);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;bmp1 := TBitmap.Create;</div><div class="code_line">&nbsp;&nbsp;bmp1.LoadFromFile(&#39;.\bitmap\main.bmp&#39;); &nbsp;// chargement du niveau</div><div class="code_line">&nbsp;&nbsp;Form1.Image1.Canvas.Brush.Color:=clWhite;</div><div class="code_line">&nbsp;&nbsp;Form1.Image1.Canvas.FillRect(Form1.Image1.ClientRect);</div><div class="code_line">&nbsp;&nbsp;Image1.Canvas.Draw(0,0,bmp1);</div><div class="code_line">&nbsp;// bmp2 := TBitmap.Create;</div><div class="code_line">&nbsp;&nbsp;//bmp2.LoadFromFile(&#39;.\bitmap\main.bmp&#39;); &nbsp;// chargement du niveau</div><div class="code_line">&nbsp;&nbsp;//Form1.Image1.Canvas.Brush.Color:=clWhite;</div><div class="code_line">&nbsp;&nbsp;//Form1.Image1.Canvas.FillRect(Form1.Image1.ClientRect);</div><div class="code_line">&nbsp;&nbsp;//Image1.Canvas.Draw(0,0,bmp2);</div><div class="code_line">&nbsp;</div><div class="code_line">end;</div><div class="code_line">.....</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.Mixer( Bitmap: TBitmap; Value: Byte; Color: TColor );</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;function BLimit( B: Integer ): Byte;</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; if B &#60; 0 then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Result := 0</div><div class="code_line">&nbsp;&nbsp; &nbsp; else if B &#62; 255 then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Result := 255</div><div class="code_line">&nbsp;&nbsp; &nbsp; else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Result := B;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;pRGB = ^TRGB;</div><div class="code_line">&nbsp;&nbsp;TRGB = record</div><div class="code_line">&nbsp;&nbsp; &nbsp;B, G, R: Byte;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;x, y: Word;</div><div class="code_line">&nbsp;&nbsp;Dest: pRGB;</div><div class="code_line">&nbsp;&nbsp;DR, DG, DB, D: Double;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp; DR := Lo( Color );</div><div class="code_line">&nbsp;&nbsp; DG := Lo( Color shr 8 );</div><div class="code_line">&nbsp;&nbsp; DB := Lo( ( Color shr 8 ) shr 8 );</div><div class="code_line">&nbsp;&nbsp; for y := 0 to Bitmap.Height - 1 do begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Dest := Bitmap.ScanLine[y];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;for x := 0 to Bitmap.Width - 1 do begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; with Dest^ do begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;R := BLimit( Round( ( R/100 * Value + DR/100 * ( 255-Value ) ) / 2 ) );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;G := BLimit( Round( ( G/100 * Value + DG/100 * ( 255-Value ) ) / 2 ) );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;B := BLimit( Round( ( B/100 * Value + DB/100 * ( 255-Value ) ) / 2 ) );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Inc( Dest );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp;Image3.canvas.Draw(0,0,Bitmap);</div><div class="code_line">end;</div></ol></div></div></div></div>]]></description>
        <author>Katerina1993</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3902052</guid>
        <pubDate>Sat, 23 Mar 2024 14:55:03 +0000</pubDate>
        <title>Как сделать линию пунктиром у Rectangle в Delphi?</title>
        <link>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3902052</link>
        <description><![CDATA[macomics: Непосредственно на Dephi 7 есть массив TImage.Bitmap.Canvas.Pixels, но работает он крайне медленно. Гораздо лучше скопировать изображение в DIBsection и получить данные непосредственно из нее.<br><br>Еще можно воспользоваться WinAPI функцией GetBitmapBits, указав её в третьем параметре массив в формате RGB достаточного размера.]]></description>
        <author>macomics</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3902047</guid>
        <pubDate>Sat, 23 Mar 2024 09:18:55 +0000</pubDate>
        <title>Как сделать линию пунктиром у Rectangle в Delphi?</title>
        <link>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3902047</link>
        <description><![CDATA[Katerina1993: Смешение работает. Протестировала пример из предыдущего поста. Возможно ли получение RGBA у компонента Image?<br>
<br>
Например в JavaScript с помощью getImageData можно вернуть одномерной массив Uint8ClampedArray, содержащий данные модели RGBA, с целыми значениями от 0 до 255. Пример на скриншоте. Вывод массива через консоль.<br>
<span class="b-attach" data-size="79852" data-hits="81" data-attach-id="65643" data-attach-post-id="3902047">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3902047&amp;attach_id=65643' title='Скачать файл' target='_blank'>rgba_example.jpg</a> (, : 81)
		</span><br>
<br>
Для этого я использую код.<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
canvas = document.getElementById(&quot;drawingCanvas&quot;);<br>
      ctx = canvas.getContext(&quot;2d&quot;);<br>
      <br>
      <br>
      canvas.width = 100;<br>
      canvas.height = 100;<br>
      <br>
      ctx.clearRect(0, 0, 100, 100)<br>
     <br>
      ctx.drawImage(img, 0, 0, 100, 100)<br>
   <br>
      const imageData = ctx.getImageData(0, 0, 100, 100);<br>
      console.log(ctx.getImageData(0, 0, 1, 1));<br>
      console.log(ctx.getImageData(0, 0, 2, 2));<br>
      console.log(ctx.getImageData(0, 0, 3, 3));<br>
      console.log(ctx.getImageData(0, 0, 4, 4));<br>
</div></div><br>
Есть что-нибудь похожее в Delphi для компонента Image?]]></description>
        <author>Katerina1993</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3901983</guid>
        <pubDate>Thu, 21 Mar 2024 23:30:18 +0000</pubDate>
        <title>Как сделать линию пунктиром у Rectangle в Delphi?</title>
        <link>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3901983</link>
        <description><![CDATA[macomics: Есть API функция для установки ординат для контекста. Но в самом Canvas я не помню, чтобы такое можно было изменить на Delphi 7.<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">unit Unit1;</div><div class="code_line">&nbsp;</div><div class="code_line">interface</div><div class="code_line">&nbsp;</div><div class="code_line">uses</div><div class="code_line">&nbsp;&nbsp;Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,</div><div class="code_line">&nbsp;&nbsp;Dialogs, StdCtrls;</div><div class="code_line">&nbsp;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;TForm1 = class(TForm)</div><div class="code_line">&nbsp;&nbsp; &nbsp;MoveLeftButton: TButton;</div><div class="code_line">&nbsp;&nbsp; &nbsp;MoveUpButton: TButton;</div><div class="code_line">&nbsp;&nbsp; &nbsp;MoveDownButton: TButton;</div><div class="code_line">&nbsp;&nbsp; &nbsp;MoveRightButton: TButton;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure FormPaint(Sender: TObject);</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure MoveLeftButtonClick(Sender: TObject);</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure FormCreate(Sender: TObject);</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure MoveUpButtonClick(Sender: TObject);</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure MoveRightButtonClick(Sender: TObject);</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure MoveDownButtonClick(Sender: TObject);</div><div class="code_line">&nbsp;&nbsp;private</div><div class="code_line">&nbsp;&nbsp; &nbsp;newX, newY: Integer;</div><div class="code_line">&nbsp;&nbsp; &nbsp;oldP: TPoint;</div><div class="code_line">&nbsp;&nbsp;public</div><div class="code_line">&nbsp;&nbsp; &nbsp;{ Public declarations }</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;Form1: TForm1;</div><div class="code_line">&nbsp;</div><div class="code_line">implementation</div><div class="code_line">&nbsp;</div><div class="code_line">{$R *.dfm}</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.FormPaint(Sender: TObject);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;with Canvas do begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;SetWindowOrgEx(Handle, newX, newY, @oldP);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Rectangle(20, 20, 120, 120);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.FormCreate(Sender: TObject);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;newX := 0;</div><div class="code_line">&nbsp;&nbsp;newY := 0;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.MoveLeftButtonClick(Sender: TObject);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;newX := newX + 10;</div><div class="code_line">&nbsp;&nbsp;Repaint;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.MoveUpButtonClick(Sender: TObject);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;newY := newY + 10;</div><div class="code_line">&nbsp;&nbsp;Repaint;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.MoveRightButtonClick(Sender: TObject);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;newX := newX - 10;</div><div class="code_line">&nbsp;&nbsp;Repaint;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.MoveDownButtonClick(Sender: TObject);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;newY := newY - 10;</div><div class="code_line">&nbsp;&nbsp;Repaint;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">end.</div></ol></div></div></div></div>]]></description>
        <author>macomics</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3901982</guid>
        <pubDate>Thu, 21 Mar 2024 22:01:46 +0000</pubDate>
        <title>Как сделать линию пунктиром у Rectangle в Delphi?</title>
        <link>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3901982</link>
        <description><![CDATA[Katerina1993: Еще вопрос. Как сместить объект(фигуры) в delphi по оси координат? <br>
<br>
При этом не меняя значения в MoveTo, Lineto, Rectangle. Например в той же javascript есть функция transform. Достаточно поставить перед отрисовкой фигуры transform.<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
 var canvas = document.getElementById(&quot;drawingCanvas&quot;);<br>
 var context = canvas.getContext(&quot;2d&quot;);<br>
canvas.style.background = &quot;#CCCCCC&quot;;<br>
context.beginPath();<br>
context.lineWidth=&quot;4&quot;;<br>
 context.setLineDash([12,12]);<br>
 context.strokeStyle=&quot;blue&quot;;<br>
 context.transform(1,0,0,1,20,20);<br>
 context.rect(0, 0, 120, 120);<br>
 context.stroke();<br>
</div></div><br>
и объект сместиться по x=20  и по y=20.<br>
<br>
<span class="b-attach" data-size="6739" data-hits="98" data-attach-id="65638" data-attach-post-id="0">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=0&amp;attach_id=65638' title='Скачать файл' target='_blank'>rect.jpg</a> (, : 98)
		</span>]]></description>
        <author>Katerina1993</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3901948</guid>
        <pubDate>Thu, 21 Mar 2024 09:36:58 +0000</pubDate>
        <title>Как сделать линию пунктиром у Rectangle в Delphi?</title>
        <link>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3901948</link>
        <description><![CDATA[MBo: Зачем рисовать линиями, если есть примитив TCanvas.Rectangle?]]></description>
        <author>MBo</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3901920</guid>
        <pubDate>Thu, 21 Mar 2024 06:04:51 +0000</pubDate>
        <title>Как сделать линию пунктиром у Rectangle в Delphi?</title>
        <link>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3901920</link>
        <description><![CDATA[Katerina1993: Спасибо, разобралась.<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">begin</div><div class="code_line">Canvas.Pen.Width := 1;</div><div class="code_line">Canvas.Pen.Color := clBlue;</div><div class="code_line">Canvas.Pen.Style := psDash;</div><div class="code_line">Canvas.MoveTo(20, 20);</div><div class="code_line">Canvas.LineTo(20, 200);</div><div class="code_line">Canvas.LineTo(200, 200);</div><div class="code_line">Canvas.LineTo(200, 20);</div><div class="code_line">Canvas.LineTo(20, 20);</div><div class="code_line">end;</div></ol></div></div></div></div>]]></description>
        <author>Katerina1993</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3901919</guid>
        <pubDate>Thu, 21 Mar 2024 04:10:48 +0000</pubDate>
        <title>Как сделать линию пунктиром у Rectangle в Delphi?</title>
        <link>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3901919</link>
        <description><![CDATA[MBo: <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">Canvas.Pen.Style := psDash;</div></ol></div></div></div></div>]]></description>
        <author>MBo</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3901886</guid>
        <pubDate>Wed, 20 Mar 2024 10:10:48 +0000</pubDate>
        <title>Как сделать линию пунктиром у Rectangle в Delphi?</title>
        <link>https://forum.sources.ru/index.php?showtopic=443691&amp;view=findpost&amp;p=3901886</link>
        <description><![CDATA[Katerina1993: Здравствуйте, нашла пример где создается Rectangle. Линия у квадрата обрывистые.<br>
Вот пример:<br>
<a class='tag-url' href='https://1olgastorm.github.io/Example1/canvas1.html' target='_blank'>https://1olgastorm.github.io/Example1/canvas1.html</a><br>
Вот код на html.<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
var canvas = document.getElementById(&quot;drawingCanvas&quot;);<br>
var context = canvas.getContext(&quot;2d&quot;);<br>
canvas.style.background = &quot;#CCCCCC&quot;;<br>
context.beginPath();<br>
context.lineWidth=&quot;4&quot;;<br>
context.setLineDash([12,12]);<br>
context.strokeStyle=&quot;blue&quot;;<br>
context.rect(20, 20, 120, 120);<br>
context.stroke();<br>
</div></div><br>
Как тоже самое нарисовать на форме Delphi, чтобы в квадрате линия тоже были пунктиром?]]></description>
        <author>Katerina1993</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	