GDI+: графика нового поколения
От: Виталий Брусенцев www.airbandits.com/
Дата: 16.12.01 21:59
Оценка: 35 (3) +3
Статья:
GDI+: графика нового поколения
Автор(ы): Виталий Брусенцев
Дата: 13.12.2001

Обзор возможностей GDI+. Рекомендации по программированию. Первая программа.


Авторы:
Виталий Брусенцев

Аннотация:
Обзор возможностей GDI+. Рекомендации по программированию. Первая программа.
Успехов,
Виталий.
Скорость: GDI vs GDI+
От: jeka2  
Дата: 17.12.01 21:59
Оценка:
Все работает хорошо и красиво, но черезвычайно медленно....
В 10 — 15 раз медленние при отсутствии антиальясинга и в 10-25 раз медленние при включином антиальясинге. Тестировалось на разных наборах примитивах (только примитивах).
Буду сильно рад если я ошибаюсь или неправильно чтото сделал...
Re: Скорость: GDI vs GDI+
От: retalik www.airbandits.com/
Дата: 17.12.01 22:05
Оценка:
Да, вопрос скорости, конечно, стоит остро. На CodeProject есть маленькая статейка об измерении производительности: http://www.codeproject.com/dotnet/gdiplusspeed.asp
Но ответов там не дается. Одну из будущих статей я планирую посветить вопросам производительности.
Если будут полезные мысли — пишите.
Успехов,
Виталий.
Вот бы
От: OLEGus1 Россия  
Дата: 29.12.01 00:24
Оценка:
Слушайте. Выложьте ктонибудь lib h файлы. Интересно потрогать. Быстродействие очень волнует
Crescite, nos qui vivimus, multiplicamini
Re: Скорость: GDI vs GDI+
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.01.02 10:27
Оценка:
Я слышал, что GDI+ будет поддерживать специальные драйверы. Если вывод будет производиться через какойнибудь ДиректХ, то скорость должна быть на высоте.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Скорость: GDI vs GDI+
От: retalik www.airbandits.com/
Дата: 02.01.02 18:12
Оценка:
К сожалению, для версии 1.0 это осталось лишь на уровне пожеланий. По заявлениям Microsoft Developer Support, GDI+ версии 1.0 не имеет собственного DDI (возможно, он появится в будущем).
Однако, во многом сравнивать производительность GDI и GDI+ некорректно. GDI не имеет многих возможностей, предоставляемых ядром GDI+ (антиалиасинг, 32-битный цвет с альфа-каналом, floating-point координатная система без пресловутых 16-битных ограничений на 95/98/ME и т.д.), и, естественно, они сказываются на производительности.
Успехов,
Виталий.
Нда. Тормоз он конечно конкретный.
От: OLEGus1 Россия  
Дата: 04.01.02 05:35
Оценка:
Попробовал загрузить и рисовать небольшой Jpg.

Ну если совмещать старый и новый GDI то весьма неплохо.
Да. Очень похоже на J++
Crescite, nos qui vivimus, multiplicamini
Re: Скорость: GDI vs GDI+
От: Amn  
Дата: 04.01.02 08:24
Оценка:
Hei dudes.. Sorry, i can type in Russian but having trouble with keystrokes :)
The keyboard is layed out in Norwegian...

Anyway, yes, i tested the GDI+ thingie, it is awfully slow. And, Retalik, you state that we should note that GDI+ does AA, and text quality drawing — well, i disabled the "FUNKY" effects, and the speed gain is about 15% :(

PIII 600Mhz, AGP Matrox G450

GDI speed:

~420000 Lines/sec (MoveTo(0, 0); LineTo(170, 100);)
~700000 Filled rectangles/sec (FillSolidRect(0, 0, 170, 100, RGB(255, 0, 0));)

GDI+ (disbled antialiasing (SetSmoothingMode(SmoothingModeDefault);)

~3000 Lines / sec (DrawLine(&Pen(Color(255, 0, 0), 1), 0, 0, 100, 170);)
~3000 (!) Empty rectangles / sec (DrawRectangle(&Pen(Color(255, 0, 0), 1), 0, 0, 100, 170);)

GDI+ (enabled antialiasing (SetSmoothingMode(SmoothingModeHighQuality);)

~1600 Lines / sec (DrawLine(&Pen(Color(255, 0, 0), 1), 0, 0, 100, 170);)
~1600 (!) Empty rectangles / sec (DrawRectangle(&Pen(Color(255, 0, 0), 1), 0, 0, 100, 170);)

Anyone, perhaps this is a "reference" driver for GDI+ that will be replaced soon ???

Bezt wishez, Amn.
Re: Скорость: GDI vs GDI+
От: OLEGus1 Россия  
Дата: 08.01.02 11:03
Оценка:
Так я и думал.....
Crescite, nos qui vivimus, multiplicamini
Небольшое дополнение в версию С#
От: Trantor Россия  
Дата: 07.02.02 03:19
Оценка:
Вместо строки
RectangleF bounds = clipBox;
нужно написать
RectangleF bounds = this.ClientRectangle;
иначе возникают глюки при перемещении формы за пределы экрана...
В жизни мало быть умным, надо еще быть не дураком.
Согласен, и не только для C#
От: retalik www.airbandits.com/
Дата: 07.02.02 17:47
Оценка:
обработчик сообщений для версии C++ лучше переписать так:

case WM_PAINT:
{
RECT rc;
GetClientRect(hWnd, &rc);
hdc = BeginPaint(hWnd, &ps);
OnPaint(hdc, &rc);
EndPaint(hWnd, &ps);
break;
}

Допишу вторую часть, скажу об этом подробнее.
Успехов,
Виталий.
Re: Скорость: GDI vs GDI+
От: Yuri Dursin  
Дата: 21.02.02 00:23
Оценка:
Мне кажется сравнение не совсем корректное, если вызывать так:

DrawLine(&Pen(Color(255, 0, 0), 1), 0, 0, 100, 170);)

Как я понимаю Pen(Color(255, 0, 0), 1), Color(255, 0, 0) — это вызовы конструкторов, за которыми стоит много кода GDI. Поэтому предыдущий вызов GDI+ эквивалентен следующему коду GDI:

HPEN pen = CreatePen(PS_SOLID, 1, RGB(255, 0, 0));
HPEN pen_old = SelectObject(dc, pen);
Rectangle(dc, 0, 0, 100, 170);
SelectObject(dc, pen_old);
DeleteObject(pen);
Durs
Исходники
От: Forix  
Дата: 21.03.02 03:13
Оценка:
а где можно скачать только файлы
GdiPlus*.h, BaseTsd.h, GdiPlus.Lib
палитра
От: mogadanez Чехия  
Дата: 07.04.02 18:21
Оценка:
пробовал на c# создать и сохранить gif файл. Возникла такая проблема:

при
Bitmap img =new Bitmap(width,height);
картинка создается 32bit цветности. я рисую 2-мя — 3мя цветами.
хочу сохранить в гиф. Он мало того что сохраняет в 256 цветах, так еще и в стандартной палитре обрезанной.
Re: палитра
От: retalik www.airbandits.com/
Дата: 07.04.02 20:13
Оценка:
Странно, я слышал, что color reduction GIF-кодек делает вполне культурно.
Если никаких ошибок нет (а где код?), то остается вариант "против лома нет приема" — создать битмап на 8bpp, установить свою палитру и сделать ему LockBits, а потом скопировать туда точки из нарисованного битмапа, выбирая нужные цвета.
Подробнее об этом я расскажу в 3-ей части (а все вторую никак не успеваю закончить :( )
Успехов,
Виталий.
Спасибо за статью
От: rborisov  
Дата: 12.05.02 22:19
Оценка:
Очень интересная статейка. С нетерпением ждем обешанного продолжения.
Re: Спасибо за статью
От: retalik www.airbandits.com/
Дата: 12.05.02 23:41
Оценка:
Завтра :)
Успехов,
Виталий.
STL и GDI+
От: slonnik  
Дата: 27.05.02 02:39
Оценка:
не открывайте все пространство std дерективой using namespace std;
получите конфликт имен с std::iterator
F1: GDI+ в Windows98
От: oy  
Дата: 04.12.02 11:45
Оценка:
может, кто-нибудь сталкивался с такой проблемой по w98:
Если Image::FromFile передать имя файа, в котором имеются пробелы (например, "kot .jpg"), вылетает виндусовое белое окошко с ошибкой "Cannot find the file kot .jpg". Хотя файл существует. Причем файлы типа "C:\My Documents\jjj.jpg" грузятся нормально.
Продебажив насколько это возможно, упираюсь в вызов GdipLoadImageFromFile, из которого это окошко и вылетает. при этом оттуда возвращается OK.
под 2000 работает без проблем..
F1 по-прежнему wanted! (F1: GDI+ в Windows98)
От: oy  
Дата: 05.12.02 13:24
Оценка:
Расследование показало, что проблему вызывает любой файл, имеющий в конце имени (перед точкой) пробелы. GdipLoadImageFromFile их обрезает и пытается грузить файл без завершающих пробелов в имени. (Хотя файловая система отличает файлы с пробелами на конце и без оных — "kot .jpg" и "kot.jpg" — два разных файла).
Пробелы в середине и длинные файлы грузятся на ура.
Ни на микрософте, ни в форумах такое поведение никак не упоминается..
Что это? бага?
Re: F1 по-прежнему wanted! (F1: GDI+ в Windows98)
От: retalik www.airbandits.com/
Дата: 06.12.02 05:06
Оценка:
Бага, однозначно. На форуме MS (microsoft.public.win32.programming.gdi) упоминалась неоднократно.
У меня были похожие проблемы (окошко Application Error) при попытке загрузки некоторых файлов с русскими буквами. Причем закономерности я так и не установил, а с переходом на XP они и вовсе пропали.
Какая версия gdiplus.dll у тебя? Попробуй последнюю. Если не поможет, попробуй взять соответствующую dll из Windows XP.
Успехов,
Виталий.
Re: Исходники
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 27.08.03 04:29
Оценка:
Здравствуйте, Forix, Вы писали:

F>а где можно скачать только файлы

F>GdiPlus*.h, BaseTsd.h, GdiPlus.Lib

http://www.rsdn.ru/article/Gdi/gdiplus1/GDIPlushlib.zip
Re[2]: Скорость: GDI vs GDI+
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 01.03.05 14:04
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Я слышал, что GDI+ будет поддерживать специальные драйверы. Если вывод будет производиться через какойнибудь ДиректХ, то скорость должна быть на высоте.


Да, так и есть. По крайней мере я рисовал GDI+ на DirectDrawSurface7, скорость меня вполне устраивала.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.