· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Как работать с GDI+ ?

. 1 . 2 . 3 . 4 . >>

Посл.отвђт Сообщенiе


Дата: Авг 5, 2003 20:38:51

Я тут прогу на асме пишу - позарез мне надо парочку функций из GDI+ таких как например градиентная заливка. Начитался доков - везеде пишут что вещь хорошая, но примеров чето я нигде не видел. На MSDN-е я нашел такую штуку:

LinearGradientBrush linGrBrush(
Point(0, 10),
Point(200, 10),
Color(255, 255, 0, 0), // opaque red
Color(255, 0, 0, 255)); // opaque blue

Pen pen(&linGrBrush);

graphics.DrawLine(&pen, 0, 10, 200, 10);
graphics.FillEllipse(&linGrBrush, 0, 30, 200, 100);
graphics.FillRectangle(&linGrBrush, 0, 155, 500, 30);

Я так понял это С++ и ООП. Как бы то-же самое сделать на асме. Подскажите...


Дата: Авг 5, 2003 20:47:13

так примеров в пакете MASM32 масса. Покопайтесь.


Дата: Авг 5, 2003 21:03:39

Я там смотрел... Но мож я проглядел, подскажите если не трудно какой сз примеров?


Дата: Авг 5, 2003 21:12:47

profi_r

"- Дуся? - удивился монтер. - Вы меня озлобляете. Я человек, измученный нарзаном."


Дата: Авг 5, 2003 21:31:52

xzazet
Нету там примеров по GDI+. Присветите, плиз!!!

profi_r
Есть GDIPLUS.DLL в .NET FRAMEWORK.
GDIPLUS.LIB нигде не фигурирует.
В самом MSDN открытым текстом советуют НЕ использовать Flat API для GDI+. Даже суппорт прикрыть грозяться :)))

...больше ничего не нашёл :(


Дата: Авг 5, 2003 21:39:54

Вот те раз, а как же градиент :(


Дата: Авг 6, 2003 02:46:21

Quantum
profi_r

Ну не знаю, не знаю - у меня лежат ;) Правда, комменты прояснили ситуацию. ;) По-моему, есть много информации про GDI+ на форуме powerbasic.com

PPS: для запуска нужна библиотека gdiplus.dll (в XP уже стоит). Код не смотрел, исходник запустил - работает. Разбирайтесь.



_1163921946__gdiplus_example.asm


Дата: Авг 6, 2003 08:53:43

Большое спасибо, xzazet, буду копать дальше и если че порадую своими исходниками!!!


Дата: Авг 6, 2003 09:23:21

profi_r

Не за что. Другое не выкладываю, так как не уверен в правильности подхода (копал до условия - "так, это работает" :)). Вроде везде функции возвращали eax = ok (ноль). Но, помню, там были непонятки - ноль при заведомо неверных параметрах.

Кстати, выложенный исходник не лишен спорных моментов. Например, обрати внимание на 100% CPU (или это баг, или чего-то пытался определить, уже не помню). Там дело в WndProc\WM_PAINT\DefWindowProc.

Если будешь серьезно искать на форуме PBasic, там были инклюды почти рабочие :) Выкладывай все сюда. Ну и примеры там встречались. PowerBasic читается без подготовки, асма достаточно.

И еще. Некоторые функции требуют floats в качестве параметров. Ну... держись ;)


Дата: Авг 6, 2003 09:42:09 · Поправил: xzazet

вот тут есть с floats

1860669709__gdiplus_rectfill.asm


Дата: Авг 6, 2003 19:44:56

Глянул я баг со 100% - там такая проблем - постоянно приходит сообщение WM_PAINT, не знаю почему - видимо виндовоз не устраивет то как мы это сообщение обрабатываем, толи забыли чето освободить/закрыть толи че.
Буду дальше копать...


Дата: Авг 6, 2003 20:22:09

Глянул я баг со 100% - там такая проблем - постоянно приходит сообщение WM_PAINT, не знаю почему - видимо виндовоз не устраивет то как мы это сообщение обрабатываем, толи забыли чето освободить/закрыть толи че.
Буду дальше копать...


Я же тебе уже подсказал, где ошибка :) Это может быть баг, а может быть и остатки FPS счетчика.


Дата: Авг 6, 2003 21:05:42

xzazet, ворой пример гораздо лучше и без багов, так что юзать буду скорее всего его... Тока вот мне не нравится способ вызова процедур из длл. А нельзя ли где нибудь найти .inc и .lib, ато мне чето не охота их самому делать :))


Дата: Авг 6, 2003 21:43:08

Решил всетаки сделать .inc сам, но там 609 функций - это не под силам простому смертному!!! Может всетаки где нибудь есть а ???


Дата: Авг 6, 2003 23:30:29

profi_r

:) Читай, что я вверху написал:

Если будешь серьезно искать на форуме PBasic, там были инклюды почти рабочие :) Выкладывай все сюда. Ну и примеры там встречались. PowerBasic читается без подготовки, асма достаточно.


Да, это тяжко разбираться в API без документации (начинаешь больше ценить MSDN Library ;)). Но если тебе удастся сделать _рабочий_ .inc для MASM32 - кодеры тебя не забудут. Если ты действительно настроен на продуктивный труд, то обратись на форум Hutch'a и спроси у него, есть ли что-нибудь в работе по gdiplus, чтобы велосипед не изобретать. Может он тебе популярно объяснит почему этого делать не надо (или наоборот попросит помочь с .inc). Подумай - твое имя может быть вписано в историю золотыми буквами.

PS: Сейчас у себя глянул в инклудах - есть "gdiplus.inc"! Но там только несколько функций :( .Lib не нашел - видимо размер SDK не устроил.

. 1 . 2 . 3 . 4 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.063