POS_troi
30.11.2009, 22:45
Прошу вашей помощи, дорогие Ачатовцы :p
В общем задался задачей , сделать окно нестандартной формы а конкретно - прямоугольное с закругленными углами.
Испытание первое - на легкую решил взять
берем и рисуем картинку
http://img682.imageshack.us/img682/5162/51776353.jpg
и ставим её как Фон формы (BackGroundIimage) а также в свойствах формы выставляем TransparentColor такойже как у фона картинки (розовый в данном случае)
В результате все работает но по краям формы (где закругления) остается артефакт
http://img692.imageshack.us/img692/6681/15122081.jpg
можно для TransparentColor использовать цвет, как можно ближний к самой картинке и тогда артефакт фактически невиден но нарываемся на другую проблему - невозможность выполнить дизайн в одном стиле ибо артефакты будут уже посреди формы =)
Вариант два
Использовать функцию API CreateEllipticRgn() (для элипса)
но у меня с ней возникает проблема а конкретно
HRGN region = CreateEllipticRgn(0,0,100,100);
при компиляции в Visual Studio 2008 (C++) вываливаются ошибки
1>bash.obj : error LNK2028: ссылка на неразрешенную лексему (0A00000D) "extern "C" struct HRGN__ * __stdcall CreateEllipticRgn(int,int,int,int)" (?CreateEllipticRgn@@$$J216YGPAUHRGN__@@HHHH@Z) в функции "private: void __clrcall bash::Form1::Form1_Load(class System::Object ^,class System::EventArgs ^)" (?Form1_Load@Form1@bash@@$$FA$AAMXP$AAVObject@Syst em@@P$AAVEventArgs@4@@Z)
1>bash.obj : error LNK2019: ссылка на неразрешенный внешний символ "extern "C" struct HRGN__ * __stdcall CreateEllipticRgn(int,int,int,int)" (?CreateEllipticRgn@@$$J216YGPAUHRGN__@@HHHH@Z) в функции "private: void __clrcall bash::Form1::Form1_Load(class System::Object ^,class System::EventArgs ^)" (?Form1_Load@Form1@bash@@$$FA$AAMXP$AAVObject@Syst em@@P$AAVEventArgs@4@@Z)
1>F:\Проэкты\bash\Debug\bash.exe : fatal error LNK1120: 2 неразрешенных внешних элементов
и вот не могу въехать в чем трабла, при этом в DEVC++ и Borland C++ все нормально.
Пожалуйста вырвите мне руки из жо** и вставьте на место.
В общем задался задачей , сделать окно нестандартной формы а конкретно - прямоугольное с закругленными углами.
Испытание первое - на легкую решил взять
берем и рисуем картинку
http://img682.imageshack.us/img682/5162/51776353.jpg
и ставим её как Фон формы (BackGroundIimage) а также в свойствах формы выставляем TransparentColor такойже как у фона картинки (розовый в данном случае)
В результате все работает но по краям формы (где закругления) остается артефакт
http://img692.imageshack.us/img692/6681/15122081.jpg
можно для TransparentColor использовать цвет, как можно ближний к самой картинке и тогда артефакт фактически невиден но нарываемся на другую проблему - невозможность выполнить дизайн в одном стиле ибо артефакты будут уже посреди формы =)
Вариант два
Использовать функцию API CreateEllipticRgn() (для элипса)
но у меня с ней возникает проблема а конкретно
HRGN region = CreateEllipticRgn(0,0,100,100);
при компиляции в Visual Studio 2008 (C++) вываливаются ошибки
1>bash.obj : error LNK2028: ссылка на неразрешенную лексему (0A00000D) "extern "C" struct HRGN__ * __stdcall CreateEllipticRgn(int,int,int,int)" (?CreateEllipticRgn@@$$J216YGPAUHRGN__@@HHHH@Z) в функции "private: void __clrcall bash::Form1::Form1_Load(class System::Object ^,class System::EventArgs ^)" (?Form1_Load@Form1@bash@@$$FA$AAMXP$AAVObject@Syst em@@P$AAVEventArgs@4@@Z)
1>bash.obj : error LNK2019: ссылка на неразрешенный внешний символ "extern "C" struct HRGN__ * __stdcall CreateEllipticRgn(int,int,int,int)" (?CreateEllipticRgn@@$$J216YGPAUHRGN__@@HHHH@Z) в функции "private: void __clrcall bash::Form1::Form1_Load(class System::Object ^,class System::EventArgs ^)" (?Form1_Load@Form1@bash@@$$FA$AAMXP$AAVObject@Syst em@@P$AAVEventArgs@4@@Z)
1>F:\Проэкты\bash\Debug\bash.exe : fatal error LNK1120: 2 неразрешенных внешних элементов
и вот не могу въехать в чем трабла, при этом в DEVC++ и Borland C++ все нормально.
Пожалуйста вырвите мне руки из жо** и вставьте на место.