Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Аноним, Вы писали:
А>> Вывожу при помощи GDI+ кучу разных простейших элементов, типа кружочки, квадратики, и.т.п. Их очень много и чтобы их хоть как-то разделять на группы хочется рисовать их внутри чего-то красивого, например облака. Не подскажите, как это можно сделать?
А>Как я понял, Вы хотите рисовать в пределах некоторой области. В пространстве имен System.Drawing есть класс Region, который позволяет задать область рисования. При рисовании за ее пределами, весь графический вывод будет отсекаться. Можно создать несколько таких Region-ов и выводить то в один, то в другой. Форма региона может быть любой (даже облаком). Форма региона указывается в конструкторе объекта класса регион:
А>А>MyRegion1 = new Region(GP);
А>
А>Вот здесь GP как раз и задает форму ограничивающего региона. GP это замкнутая фигура любой формы. Это объект класса GraphicPath, который находится в пространстве имен System.Drawing2D. Нужно предварительно создать этот контур с помощью методов этого класса (а там много разных методов: окружности, кривые Безье и т.д). и передать как форму региона. Дальше можно в регионе рисовать. Вот к примеру.
А>А>GraphicPath GP = new GraphicPath();
А>GP.AddArc(1,1,20,50,10,50); // Добавили окружность к области
А>GP.AddArc(new Rectangle(30,40,100,56); // Добавили прямоугольник к области
А>MyRegion1 = new Region(GP); // Сделали регион на базе созданной области
А>
А>Далее нужно указать, что этот регион является ограничивающей областью холста, на котором происходит рисование. Для этого у холста (объекта Graphics) есть свойство Clip.
А>А>e.Graphics.Clip = MyRegion1;
А>
А>Далее все рисование будет происходить в пределах этого региона:
А>Это в общих словах. Подробнее можно найти в MSDN-е. См. описание классов Region,GraphicPath и пространств имен System.Drawing и System.Drawing2D