ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

VS C++ 2008 + Регионы
  #1  
Старый 30.11.2009, 22:45
POS_troi
Познавший АНТИЧАТ
Регистрация: 01.12.2006
Сообщений: 1,769
Провел на форуме:
3718311

Репутация: 1118


Отправить сообщение для POS_troi с помощью ICQ
По умолчанию VS C++ 2008 + Регионы

Прошу вашей помощи, дорогие Ачатовцы

В общем задался задачей , сделать окно нестандартной формы а конкретно - прямоугольное с закругленными углами.

Испытание первое - на легкую решил взять

берем и рисуем картинку



и ставим её как Фон формы (BackGroundIimage) а также в свойствах формы выставляем TransparentColor такойже как у фона картинки (розовый в данном случае)

В результате все работает но по краям формы (где закругления) остается артефакт



можно для 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@System@@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@System@@P$AAVEventArgs@4@@Z)
1>F:\Проэкты\bash\Debug\bash.exe : fatal error LNK1120: 2 неразрешенных внешних элементов
и вот не могу въехать в чем трабла, при этом в DEVC++ и Borland C++ все нормально.

Пожалуйста вырвите мне руки из жо** и вставьте на место.
 
Ответить с цитированием

  #2  
Старый 30.11.2009, 23:03
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

VC++ 2008 Pro отлично компилится
 
Ответить с цитированием

  #3  
Старый 30.11.2009, 23:10
POS_troi
Познавший АНТИЧАТ
Регистрация: 01.12.2006
Сообщений: 1,769
Провел на форуме:
3718311

Репутация: 1118


Отправить сообщение для POS_troi с помощью ICQ
По умолчанию

2slesh

Какой проэкт создавал? Windows Forms?

Можеш скинуть проэктик? ибо я тоже все это делаю в VS2008.

Да действительно если создавать Win32 проэкт то все компилиться и регион накладывается но вот если MFC то тут сабака.. пошел рыть дальше =)

Последний раз редактировалось POS_troi; 30.11.2009 в 23:42..
 
Ответить с цитированием

  #4  
Старый 01.12.2009, 10:33
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

Кстати, насчет артефактов. Ты картинку создаеш в фотошопе наверное с включенным сглаживанием?

Такие вещи должны иметь четкие цвета без сглаживаний и размытий, по этому лучше рисуй их в паинте который в 98-2003 виндах (Vista и w7 не подойдет)
ВОт в них можно нарисовать и отлично всё будет. Сам проверял когдато. Но главное чтобы картинка была BMP (там нет потери качества и искажения)

Но есть и еще лучшая вешь:
Программно рисуй всё. С экономишь на размере. Прям на форме можеш рисовать нужным цветом, который обеспечивает прозрачность
 
Ответить с цитированием

  #5  
Старый 01.12.2009, 11:00
POS_troi
Познавший АНТИЧАТ
Регистрация: 01.12.2006
Сообщений: 1,769
Провел на форуме:
3718311

Репутация: 1118


Отправить сообщение для POS_troi с помощью ICQ
По умолчанию

Да с картинкой разобрался (вычитал на забугорном форуме) но всеравно спасибо.

Насчет "ручками рисовать" - оно то можно но тут уже спортивный интерес, как понял нужно копать в сторону GDI (Вот сижу MSDN изучаю)
 
Ответить с цитированием

  #6  
Старый 02.12.2009, 10:42
POS_troi
Познавший АНТИЧАТ
Регистрация: 01.12.2006
Сообщений: 1,769
Провел на форуме:
3718311

Репутация: 1118


Отправить сообщение для POS_troi с помощью ICQ
По умолчанию

UP!

Все еще интересно - как реализовать работу с регионами в C++.NET
 
Ответить с цитированием

  #7  
Старый 03.12.2009, 05:22
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

Артефакт элементарно убирается - в настройках рисования убирается AA.
 
Ответить с цитированием

  #8  
Старый 04.12.2009, 18:52
POS_troi
Познавший АНТИЧАТ
Регистрация: 01.12.2006
Сообщений: 1,769
Провел на форуме:
3718311

Репутация: 1118


Отправить сообщение для POS_troi с помощью ICQ
По умолчанию

Да но если убрать сглаживание то края формы будут рваные (что кстати не очень и критично).

Думал рисовать регион на базе картинки а потом доперло что скорее всего в глубине компонента так и происходит и нефиг из .NEt делать WinApi =)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
V.I.P. VPN & Socks Service Revive VPN, Proxy, Socks - Покупка, продажа 12 10.05.2010 18:22
Microsoft Hyper-V Server 2008 R2 доступен официально и бесплатно jerrri Мировые новости 0 01.09.2009 15:54
Symantec опубликовала отчет об ИТ-безопасности в 2008 году WAR!9G Мировые новости 1 04.12.2008 22:28



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ