Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.09;
Скачать: CL | DM;

Вниз

Использование GDI+   Найти похожие ветки 

 
Antonn ©   (2005-05-22 07:13) [0]

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


 
TUser ©   (2005-05-22 08:01) [1]

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


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

Можно. Но если ты решаешь где-то использовать а где-то нет, то не проще ли написать универсальный код, пусть неподдерживающий 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 ... будет метод, который ты будешь вызывать, и который будет делать все проверки, выбирая правильный вариант вывода.


 
Antonn ©   (2005-05-22 08:35) [3]

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

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

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

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


 
Antonn ©   (2005-05-22 08:40) [4]

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

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


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


> 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 09:31) [6]

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



Страницы: 1 вся ветка

Текущий архив: 2005.10.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.045 c
14-1126612702
leonidus
2005-09-13 15:58
2005.10.09
Объясните мне на пальцах про индексы


2-1125055920
KyRo
2005-08-26 15:32
2005.10.09
Как отслеживать первую запись ?


2-1125083133
dimaa
2005-08-26 23:05
2005.10.09
bold в RichEdit-e


14-1127051675
Piter
2005-09-18 17:54
2005.10.09
Сам себе ДиДжей :)


14-1127216130
Profi
2005-09-20 15:35
2005.10.09
Нужна помощь с железом