· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Как работать с GDI+ ?

<< . 1 . 2 . 3 . 4 . >>

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


Дата: Авг 7, 2003 21:56:51

[ xzazet: Cкриншотик бы, а то и пару :)]

По скриншоту будет не понять, тулзень лежит на этом сайте.

По-поводу перестановки, то в 98-й без этого просто нельзя, она
глючить начинает(хотя я работаю без перестановки месяца 4-5,
потом восстанавливаю из клона)
XP, после серьёзного улёта, при каждом запуске(!) пишет что система
восстановлена после серьёзной ошибки, а на счёт сервисов, я так и
делаю, отключаю всё что мне не нужно, потому что не терплю
тормозов :-)


Дата: Авг 7, 2003 22:18:21

Ну вот кое-что еще написал - градиенты! Там тока почемуто не работает функция GdipSetPathGradientSurroundColorsWithCount, а в остальном все ОК.

На счет этой функции: вылетает именно она т к после нее больше ни строчки кода не выполняется. А функция нужная. Кстати тормозить начинает когда есть процент прозрачности.
Теперь есть задачка посложнее - как нарисовать полупрозрачное окошко, я лично не знаю мож кто подскажет?

В либу добавлены елипсы и градиенты, а также парочка структур.

1459973244__GDI+.zip


Дата: Авг 8, 2003 06:13:42

profi_r

Посмотрел Ваш сорс. Некоторые замечания. Если мы создаем окно с CS_OWNDC, то hDC не меняется. Достаточно его получить один раз по GetDC.

Попробуйте в конце обработки WM_PAINT вызывать DefWindowProc, тогда BeginPaint\EndPaint не нужны. Вообще решение проблемы flickering (мерцания изображения) лежит в использовании двойных буферов. Посмотрите по ссылке, которую я давал, там есть примеры.


Теперь есть задачка посложнее - как нарисовать полупрозрачное окошко, я лично не знаю мож кто подскажет?

Можно решить разными путями. Один из простых - SetLayeredWindowAttributes. А можно и с помощью GDI+ ;)


profi_r, сайт wasm.ru вводит понятие "projects", где будет собираться народ, воплощающий в жизнь какую-либо идею. Надеюсь, этот раздел будет пользоваться особым уважением со стороны посетителей (по крайней мере я буду помогать по мере сил), так как в результате выигрывают все. Ваше стремление создать includы для MASM как раз подходит к этому определению, и я лично это очень уважаю. Согласны ли Вы запустить этот проект в жизнь?


Дата: Авг 8, 2003 07:40:05

Лично я не против, а даже за! Да только инклуды я не так уж часто делаю - времени нет, но по мере возможности буду выкидывать все на wasm.ru

Я сейчас занимаюсь одним проектом - подсветка синтаксиса у различных файлов и попутно изучаю разные эффекты и примочки винды - уж очень мне нравятся нестандартные красивые интерфейсы нарисованные не простыми .bmp, а именно ручками.


Дата: Авг 8, 2003 08:10:26

а где можно узнать значение WS_EX_LAYERED - его нету в инклуде масма?


Дата: Авг 8, 2003 10:38:31

profi_r

а где можно узнать значение WS_EX_LAYERED - его нету в инклуде масма?

WS_EX_LAYERED equ 00080000h


хммм, не злоупотребляешь ли? ;)


Дата: Авг 10, 2003 21:10:54

gdiplus.lib
gdiplus.inc

Осталось сделать структуры и константы + проверить gdiplus.inc ;)

_1741836629__gdiplus.lib.inc.rar


Дата: Авг 10, 2003 21:13:41


Дата: Авг 10, 2003 21:13:58


Дата: Авг 11, 2003 20:10:33

Пасибо, xzazet, я это долго искал - я так понимаю мне надо занятся переводом С++ -> ASM. Я займусь! Просто я PSDK докачать не могу - много весит - уже неделю качаю. А там эти аши вроде есть...


Дата: Авг 11, 2003 20:47:50

profi_r
Так а статьи будут? :())))
Я тут ветку читаю, и думаю, когда созреит :)


Дата: Авг 12, 2003 09:02:59

Edmond, это затруднительно, времени нет - мож помогу чем, но не доку писать...

xzazet, почему всетаки не работает функция GdipSetPathGradientSurroundColorsWithCount ??? Я уж не знаю че ей надо... Приложу новый исходник с ее применением. В аше, где есть эта функция таблицу цветов зачем-то копируют в динамическую память... мож из-за этого?

332704420__gradients.asm


Дата: Авг 12, 2003 09:19:42

Сори забыл инку вложить

_589385607__gdiplus.zip


Дата: Авг 12, 2003 15:10:42

profi_r

xzazet, почему всетаки не работает функция GdipSetPathGradientSurroundColorsWithCount

Посмотрите в .h там не все так прозрачно

Сейчас уже идет творческая работа. В принципе у нас все есть, чтобы портировать GDI+ в МАСМ. Алгоритм работы:

1) Смотрим исходник на С++
2) Ищем классы в .h - медитируем
3) Пишем код на МАСМ с комментариями

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

Можете ли делать отдельный .inc для структур GDI+ (от PROTO функций) - так будет легче разбираться, PROTO функции врядли изменятся. И к каждой версии .inc добавлять её номер. Опять же удобнее.


Дата: Авг 12, 2003 16:25:11 · Поправил: Безпощадный даос

Например,

ДАНО:
; C++
protected override void OnPaint(PaintEventArgs pe) 
{ 
   Graphics g = pe.Graphics ; 
   Rectangle rect = new Rectangle(50, 30, 100, 100); 
   LinearGradientBrush lBrush = new LinearGradientBrush(rect, Color.Red,
    Color.Yellow, 
   LinearGradientMode.BackwardDiagonal); 
   g.FillRectangle(lBrush, rect); 
} 


ОТВЕТ:


_2054900839__gdiplus_gradient.PNG

<< . 1 . 2 . 3 . 4 . >>


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