От сообщество Набора Корпоративного приложения Python :
"Яйца к Python, как Банки к Java..."
яйца Python являются способом связать дополнительную информацию проектом Python, который позволяет зависимостям проекта быть проверенными и удовлетворенными во времени выполнения, а также проектах разрешения обеспечить плагины для других проектов. Существует несколько двоичных форматов, которые воплощают яйца, но наиболее распространенным является '.egg' zipfile формат, потому что это - удобное для распределительных проектов. Вся поддержка форматов включая определенные для пакета данные, метаданные всего проекта, C расширения и код Python.
основные преимущества Яиц Python:
Они включают инструменты как "Легкая Установка" диспетчер пакетов Python
, .egg файлы являются "нулевой установкой" формат для пакета Python; никакой шаг сборки или установки требуется, просто поместил их на PYTHONPATH или sys.path и использует их (может потребовать времени выполнения, установленного, если расширения C или файлы данных используются)
, Они могут включать метаданные пакета, такие как другие яйца, они зависят от [1 117]
, Они позволяют "пакеты пространства имен" (пакеты, которые просто содержат другие пакеты), чтобы быть разделенными на отдельные дистрибутивы (например, zope. , скрученный. , пик.* пакеты могут быть распределены как отдельные яйца, в отличие от нормальных пакетов, которые должны всегда помещаться в соответствии с тем же родительским каталогом. Это позволяет то, что является теперь огромными монолитными пакетами, которые будут распределены как отдельные компоненты.)
Они позволяют приложениям или библиотекам определять необходимую версию библиотеки, так, чтобы Вы могли, например, требовать ("скрученный Интернет> =2.0") прежде, чем сделать импорт twisted.internet.
Они - большой формат для распределительных расширений или плагинов к расширяемым приложениям и платформам (таким как Trac, который использует яйца для плагинов с 0.9b1), потому что время выполнения яйца обеспечивает простые API, чтобы определить местоположение яиц и найти их рекламируемые точки входа (подобными понятию "точки расширения" Eclipse).
существуют также другие преимущества, которые могут прибыть из наличия стандартизированного формата, подобного преимуществам формата "банки" Java.
-Adam
Он работает со следующим кодом:
var shape:Shape = new Shape();
shape.graphics.beginFill(0x000000, 1); // solid black
shape.graphics.moveTo(points[0].x, points[0].y);
points.forEach(function (p:Point, i:int, a:Array):void {
shape.graphics.lineTo(p.x, p.y);
});
shape.graphics.endFill();
data.draw(shape, null, null, "erase");
Для прямоугольника вы можете использовать fillRect. Для многоугольника вам нужно будет нарисовать многоугольник совершенно другим цветом (чем другие цвета в растровом изображении) и использовать floodFill, но я не знаю, как рисовать многоугольник. В классе данных растрового изображения нет метода для рисования линий. Другой вариант - написать собственную логику для поиска пикселей внутри многоугольника и использовать метод setPixel32 для установки их альфа в ноль.
Эта страница википедии описывает алгоритмы, чтобы определить, находится ли точка внутри данного многоугольника. . Возможно, вам это пригодится.