C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь


http://www.t-g.ru/shop/8/ бумага для принтера плоттера цена.

 Создание круглых кнопок и кнопок в виде элипса / Button / Элементы управления

Создание круглых кнопок и кнопок в виде элипса.

Автор: Chris Maunder

Sample Image

Вам захотелось в свою программу добавить какой-то нестандартности?. Можно начать с кнопок :) Два класса, которые здесь представлены, не что иное, как обыкновенная замена стандартному классу CButton. Всё, что от Вас требуется, это включить исходники в Ваш проект и прописать хедеры(#include).

После этого достаточно объявить ваш объект как CRoundButton или CEllipticalButton (для элипса)вместо обычного CButton.

Как видно из скриншота, по краям кнопка имеет плавный переход цвета, что добавляет её элегантности :) Ключевой момент - это алгоритм, по которому производится вычисление цвета:

COLORREF GetColour(double dAngle, COLORREF crBright, COLORREF crDark)
{
#define Rad2Deg	180.0/3.1415 
#define LIGHT_SOURCE_ANGLE -2.356    // -2.356 радиан = -135 градусов, 
                                     // Т.е. с верхнего левого края экрана

	ASSERT(dAngle > -3.1416 && dAngle < 3.1416);
	double dAngleDifference = LIGHT_SOURCE_ANGLE - dAngle;

	if (dAngleDifference < -3.1415) dAngleDifference = 6.293 + dAngleDifference;
	else if (dAngleDifference > 3.1415) dAngleDifference = 6.293 - dAngleDifference;

	double Weight = 0.5*(cos(dAngleDifference)+1.0);

	BYTE Red   = (BYTE) (Weight*GetRValue(crBright) + (1.0-Weight)*GetRValue(crDark));
	BYTE Green = (BYTE) (Weight*GetGValue(crBright) + (1.0-Weight)*GetGValue(crDark));
	BYTE Blue  = (BYTE) (Weight*GetBValue(crBright) + (1.0-Weight)*GetBValue(crDark));

	return RGB(Red, Green, Blue);
}

Это простая линейная интерполяция между двумя цветами, основанная на косинусе угла между источником света и точкой. Углы измеряются от +ve x-оси (т.е. (1,0) = 0 градусов, (0,1) = 90 градусов ), не забудьте, что положительная y-координата идёт вниз.

 

Кнопки в виде элипса

Автор: Raghav Gupta

EllipticButtons.jpg (8697 bytes)

Данный пример основан на предыдущем классе, с той лишь разницей, что кнопки не круглые, а в виде элипса. Класс используется точно так же как предыдущий.