Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Использование GDI+


Antonn ©   (2005-05-22 07:13:00) 

Здравствуйте! Использую GDI+ и появилось пара вопросов. В ВинХР уже присутствует gdiplus.dll поэтому все без проблем, но на W2k, например, нужно таскать с собой эту gdiplus.dll, без нее вылетает ошибка о ненахождении библиотеки, после чего программа закрывается. Так вот, можно ли мне в программе самому решать, когда использовать ГДИ+? А то ее библиотека грузится автостартом в приложении.


Antonn   (2005-05-22 09:31:00) [1]

charlie   (22.05.05 8:53) [5]
спасибо. жаль что в С я чайник:)


charlie   (2005-05-22 08:53:00) [2]


> Antonn ©   (22.05.05 08:40) [4]
> Antonn ©   (22.05.05 8:35) [3]

Ну тогда нужна всего одна функция. А вот почитать с чего она стартует   http://www.rsdn.ru/article/gdi/gdiplus1.xml#EHBA


Antonn   (2005-05-22 08:40:00) [3]

Antonn ©   (22.05.05 8:35) [3]
вывод линии с анизотропией

антиалиасингом


Antonn   (2005-05-22 08:35:00) [4]

TUser ©   (22.05.05 8:01) [1]
вот я и хотел узнать, с чего "начинается ГДИ", те с чего она  стартует.

charlie   (22.05.05 8:03) [2]
пока для меня сказанное мало понятно, но пойду покопаюсь.

> А еще лучше либо найти либо написать свой класс,
> реализующий все возможности,

мне надо только вывод линии с анизотропией. и все. ГДИ+ пока самый быстрый вариант, а так уже пытался придумать.


charlie   (2005-05-22 08:03:00) [5]

Можно. Но если ты решаешь где-то использовать а где-то нет, то не проще ли написать универсальный код, пусть неподдерживающий GDIP?
А если все-же есть желание, тогда можно сделать все достаточно просто. Я, к сожалению, не вижу, какая у тебя версия дельфи. Если 7, тогда посмотри модуль UxTheme.InitThemeLibrary в качестве примера по загрузке быблиотеки и определению адреса процедур.

Вот кусочек:
     ThemeLibrary := LoadLibrary(themelib);
     if ThemeLibrary > 0 then
     begin
       OpenThemeData := GetProcAddress(ThemeLibrary, 'OpenThemeData');
       CloseThemeData := GetProcAddress(ThemeLibrary, 'CloseThemeData');
       DrawThemeBackground := GetProcAddress(ThemeLibrary, 'DrawThemeBackground');

Далее процедурные переменные используются для вызова процедур. Ну, например, объявить тип:

type
 TGdiplusStartup = function({bla-bla-bla..}): Status;
var
 GdiplusStartup: TGdiplusStartup;

Загрузить dll, получить указатель GdiplusStartup := GetProcAdress(...), вызвать GdiplusStartup({bla-bla-bla..});

А еще лучше либо найти либо написать свой класс, реализующий все возможности, которые ты хочешь использовать, в зависимости от платформы. И будет хорошо. Вместо повсеместного писания if WinVers = wv2000 then ... else ... будет метод, который ты будешь вызывать, и который будет делать все проверки, выбирая правильный вариант вывода.


TUser   (2005-05-22 08:01:00) [6]

Конечно. Используй LoadLibrary.


Наверх

Титульная страница Поиск, карта сайта Написать письмо