<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://wiki.shelek.ru/index.php?action=history&amp;feed=atom&amp;title=FAQ%3AWinAPI_VCPP%3A%D0%BD%D0%B0%D1%80%D0%B8%D1%81%D0%BE%D0%B2%D0%B0%D1%82%D1%8C_%D0%BF%D1%80%D1%8F%D0%BC%D0%BE%D1%83%D0%B3%D0%BE%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA_%D1%81_%D0%B2%D0%B5%D1%80%D1%82%D0%B8%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%BC_%D1%86%D0%B2%D0%B5%D1%82%D0%BE%D0%B2%D1%8B%D0%BC_%D0%B3%D1%80%D0%B0%D0%B4%D0%B8%D0%B5%D0%BD%D1%82%D0%BE%D0%BC</id>
		<title>FAQ:WinAPI VCPP:нарисовать прямоугольник с вертикальным цветовым градиентом - История изменений</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.shelek.ru/index.php?action=history&amp;feed=atom&amp;title=FAQ%3AWinAPI_VCPP%3A%D0%BD%D0%B0%D1%80%D0%B8%D1%81%D0%BE%D0%B2%D0%B0%D1%82%D1%8C_%D0%BF%D1%80%D1%8F%D0%BC%D0%BE%D1%83%D0%B3%D0%BE%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA_%D1%81_%D0%B2%D0%B5%D1%80%D1%82%D0%B8%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%BC_%D1%86%D0%B2%D0%B5%D1%82%D0%BE%D0%B2%D1%8B%D0%BC_%D0%B3%D1%80%D0%B0%D0%B4%D0%B8%D0%B5%D0%BD%D1%82%D0%BE%D0%BC"/>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=FAQ:WinAPI_VCPP:%D0%BD%D0%B0%D1%80%D0%B8%D1%81%D0%BE%D0%B2%D0%B0%D1%82%D1%8C_%D0%BF%D1%80%D1%8F%D0%BC%D0%BE%D1%83%D0%B3%D0%BE%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA_%D1%81_%D0%B2%D0%B5%D1%80%D1%82%D0%B8%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%BC_%D1%86%D0%B2%D0%B5%D1%82%D0%BE%D0%B2%D1%8B%D0%BC_%D0%B3%D1%80%D0%B0%D0%B4%D0%B8%D0%B5%D0%BD%D1%82%D0%BE%D0%BC&amp;action=history"/>
		<updated>2026-05-27T07:16:49Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.25.1</generator>

	<entry>
		<id>https://wiki.shelek.ru/index.php?title=FAQ:WinAPI_VCPP:%D0%BD%D0%B0%D1%80%D0%B8%D1%81%D0%BE%D0%B2%D0%B0%D1%82%D1%8C_%D0%BF%D1%80%D1%8F%D0%BC%D0%BE%D1%83%D0%B3%D0%BE%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA_%D1%81_%D0%B2%D0%B5%D1%80%D1%82%D0%B8%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%BC_%D1%86%D0%B2%D0%B5%D1%82%D0%BE%D0%B2%D1%8B%D0%BC_%D0%B3%D1%80%D0%B0%D0%B4%D0%B8%D0%B5%D0%BD%D1%82%D0%BE%D0%BC&amp;diff=636&amp;oldid=prev</id>
		<title>RXL: Разделение FAQ на статьи.</title>
		<link rel="alternate" type="text/html" href="https://wiki.shelek.ru/index.php?title=FAQ:WinAPI_VCPP:%D0%BD%D0%B0%D1%80%D0%B8%D1%81%D0%BE%D0%B2%D0%B0%D1%82%D1%8C_%D0%BF%D1%80%D1%8F%D0%BC%D0%BE%D1%83%D0%B3%D0%BE%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA_%D1%81_%D0%B2%D0%B5%D1%80%D1%82%D0%B8%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%BC_%D1%86%D0%B2%D0%B5%D1%82%D0%BE%D0%B2%D1%8B%D0%BC_%D0%B3%D1%80%D0%B0%D0%B4%D0%B8%D0%B5%D0%BD%D1%82%D0%BE%D0%BC&amp;diff=636&amp;oldid=prev"/>
				<updated>2008-11-02T17:26:05Z</updated>
		
		<summary type="html">&lt;p&gt;Разделение FAQ на статьи.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;===Как нарисовать прямоугольник с вертикальным цветовым градиентом?===&lt;br /&gt;
&lt;br /&gt;
Нужно задать граничные значения цветов, затем равномерно нарисовать несколько прямоугольников постепенно меняющегося цвета. Количество прямоугольников, а, значит - плавность градиента, задаётся точностью.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
// вертикальный градиент&lt;br /&gt;
// pdc - указатель на контекст устройства&lt;br /&gt;
// pSize - указатель на структуру&lt;br /&gt;
// SIZE с размером прямоугольника&lt;br /&gt;
// dwdColor1, dwdColor2 - начальный и конечный цвет&lt;br /&gt;
// bySteps - количество шагов градиента (1...255)&lt;br /&gt;
void sFillVertGradientRect(CDC* pdc, SIZE *pSize, COLORREF dwdColor1,&lt;br /&gt;
	COLORREF dwdColor2, BYTE bySteps)&lt;br /&gt;
{&lt;br /&gt;
	WORD i=0;&lt;br /&gt;
	long W=0;&lt;br /&gt;
	long H=0;&lt;br /&gt;
	long x1=0;&lt;br /&gt;
	long x2=0;&lt;br /&gt;
&lt;br /&gt;
	BYTE R1=0;&lt;br /&gt;
	BYTE G1=0;&lt;br /&gt;
	BYTE B1=0;&lt;br /&gt;
	BYTE R2=0;&lt;br /&gt;
	BYTE G2=0;&lt;br /&gt;
	BYTE B2=0;&lt;br /&gt;
&lt;br /&gt;
	float dh=0;&lt;br /&gt;
	float dR=0;&lt;br /&gt;
	float dG=0;&lt;br /&gt;
	float dB=0;&lt;br /&gt;
	float y1=0;&lt;br /&gt;
	float y2=0;&lt;br /&gt;
	float Rc=0;&lt;br /&gt;
	float Gc=0;&lt;br /&gt;
	float Bc=0;&lt;br /&gt;
	&lt;br /&gt;
	if(!bySteps)&lt;br /&gt;
	{&lt;br /&gt;
		bySteps=1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	//ширина и высота&lt;br /&gt;
	W=pSize-&amp;gt;cx;&lt;br /&gt;
	H=pSize-&amp;gt;cy;&lt;br /&gt;
	&lt;br /&gt;
	// раскладываем цвета на их составляющие&lt;br /&gt;
	// для удобства дальнейших вычислений&lt;br /&gt;
	R1=(BYTE)((dwdColor1 &amp;amp; 0x000000ff)			);&lt;br /&gt;
	G1=(BYTE)((dwdColor1 &amp;amp; 0x0000ff00) &amp;gt;&amp;gt; 8		);&lt;br /&gt;
	B1=(BYTE)((dwdColor1 &amp;amp; 0x00ff0000) &amp;gt;&amp;gt; 16	);&lt;br /&gt;
	R2=(BYTE)((dwdColor2 &amp;amp; 0x000000ff)			);&lt;br /&gt;
	G2=(BYTE)((dwdColor2 &amp;amp; 0x0000ff00) &amp;gt;&amp;gt; 8		);&lt;br /&gt;
	B2=(BYTE)((dwdColor2 &amp;amp; 0x00ff0000) &amp;gt;&amp;gt; 16	);&lt;br /&gt;
	&lt;br /&gt;
	// высота разноцветных прямоугольников&lt;br /&gt;
	dh=(float)H / (float)bySteps;&lt;br /&gt;
&lt;br /&gt;
	// величина шагов составляющих цветов&lt;br /&gt;
	dR=(float)(R2 - R1) / (float)bySteps;&lt;br /&gt;
	dG=(float)(G2 - G1) / (float)bySteps;&lt;br /&gt;
	dB=(float)(B2 - B1) / (float)bySteps;&lt;br /&gt;
&lt;br /&gt;
	// выводим прямоугольники&lt;br /&gt;
	x1=0;&lt;br /&gt;
	x2=W;&lt;br /&gt;
	y1=0;&lt;br /&gt;
	y2=dh;&lt;br /&gt;
	Rc=R1;&lt;br /&gt;
	Gc=G1;&lt;br /&gt;
	Bc=B1;&lt;br /&gt;
&lt;br /&gt;
	for(i=0; i&amp;lt;bySteps; i++)&lt;br /&gt;
	{&lt;br /&gt;
		// текущий цвет&lt;br /&gt;
		pdc-&amp;gt;FillSolidRect(&lt;br /&gt;
			x1,&lt;br /&gt;
			(int)y1,&lt;br /&gt;
			x2-x1,&lt;br /&gt;
			(int)(y2-y1),&lt;br /&gt;
			RGB((BYTE)Rc, (BYTE)Gc, (BYTE)Bc)&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		// следующий цвет и координаты&lt;br /&gt;
		y1+=dh;&lt;br /&gt;
		y2+=dh;&lt;br /&gt;
		Rc+=dR;&lt;br /&gt;
		Gc+=dG;&lt;br /&gt;
		Bc+=dB;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример вызова:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
SIZE Size={100, 100};&lt;br /&gt;
sFillGradientRect(&amp;amp;dc, &amp;amp;Size, RGB(200,0,0), RGB(0,200,0), 10);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQ:WinAPI VCPP]]&lt;/div&gt;</summary>
		<author><name>RXL</name></author>	</entry>

	</feed>